Solrのセキュリティー レプリケーション

トピック作成者:ks-solruserml-bot (2024/08/06 21:51 投稿)
2
CloseClose

(The bot translated the original post https://lists.apache.org/thread/6vtxgzjn643c9dmfst6m3t0qdr74d55l into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは、皆さん

セキュリティ設定を調整して、読み取り専用ユーザーが管理パネルにアクセスできるようにし、ドキュメントの更新やコレクションの作成・編集はできないようにしました。ただし、現在そのユーザーがコアのレプリケーション画面で「レプリケーションを無効にする」ボタンをクリックしてレプリケーションを無効にできてしまいます。特定のユーザーまたはロールに対してこの機能を無効にする方法についてご存じの方はいらっしゃいますか?

ありがとうございます!
Paul

{
  "authentication": {
    "blockUnknown": true,
    "class": "solr.BasicAuthPlugin",
    "credentials": {
      "solr-admin": "IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c=",
      "solr-read": "IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="
    },
    "forwardCredentials": false,
    "": { "v": 0 }
  },
  "authorization": {
    "class": "solr.RuleBasedAuthorizationPlugin",
    "user-role": {
      "solr-admin": ["admin"],
      "solr-read": ["readonly"]
    },
    "permissions": [
      {
        "name": "update",
        "role": ["admin"],
        "index": 1
      },
      {
        "name": "read",
        "role": ["admin", "readonly"],
        "index": 2
      },
      {
        "name": "security-edit",
        "role": ["admin"],
        "index": 3
      },
      {
        "name": "security-read",
        "role": ["admin"],
        "index": 4
      },
      {
        "name": "core-admin-edit",
        "role": ["admin"],
        "index": 5
      },
      {
        "name": "collection-admin-edit",
        "role": ["admin"],
        "index": 6
      },
      {
        "name": "config-edit",
        "role": ["admin"],
        "index": 7
      },
      {
        "name": "config-read",
        "role": ["admin"],
        "index": 8
      },
      {
        "name": "schema-edit",
        "role": ["admin"],
        "index": 9
      },
      {
        "name": "filestore-write",
        "role": ["admin"],
        "index": 10
      },
      {
        "name": "package-edit",
        "role": ["admin"],
        "index": 11
      },
      {
        "name": "all",
        "role": ["admin", "readonly"],
        "index": 12
      }
    ],
    "": { "v": 0 }
  }
}
返信投稿者:ks-solruserml-bot (2024/08/06 21:51 投稿)

{
"name":"all",
"role":[ "admin", "readonly"],
"index":12}

その部分が問題の可能性が高いです。readonlyロールに「all」権限を与えています。つまり、以前のルールに明示的にリストされていない権限についても、readonlyロールはそれを実行できることになります。「all」権限から readonly を削除してみてください。それで解決するかもしれません。レプリケーションの有効化や無効化をカバーする明示的な権限は存在しないと思われるので、それは「all」権限に含まれる可能性があります。

「all」権限を最後に設定しているため、他の権限(admin のみに割り当てられているもの)は必要ありませんが、現状の設定ではこれらの権限が他の設定に悪影響を及ぼすことはありません。「read」権限には両方のロールが必要です。もし admin をその権限から削除すると、admin ユーザーはクエリを実行できなくなります。

Cloud モードで運用している場合や、スタンドアロンモードで分散インデックスを持っている場合は、forwardCredentials を無効にするとクエリが動作しなくなる可能性があります。この点については、より多くの認証の専門家が確認する必要があります。

Solr のルールベースの認証がどのように機能するかを完全に理解するのには数時間かかりました。それがどのように設計されているかが分かったとき、それが非常に直感的ではないことを認めざるを得ませんが、その柔軟性には驚きました。


以下は、サンプルの認証と認可の security.json をリファレンスガイドから ZooKeeper にアップロードした後、完全に Web UI で構築した security.json です。ここには、3 つのユーザー - read、update、および admin - が含まれています。

  • read ロールは、Solr 9.3.0-SNAPSHOT のほとんどの read 権限に加えて、health 権限を持っています。filestore-readsecurity-read は除外しています。
  • update ロールは、"update" 権限のみを持っており、これにより更新リクエストを送信できます。
  • admin ロールは、"all" 権限を持っています。

admin ユーザーはすべてのロールを持っています。update ユーザーは read と update のロールを持ちます。read ユーザーは read ロールのみを持ちます。設定が解析される方法のため、admin ユーザーから read と update ロールを削除すると、想定した通りには機能しません。

  • read ユーザーは Solr から多くの情報を取得できますが、変更を加えることはできません。
  • update ユーザーは read ユーザーができるすべての操作に加えて、インデックスの変更も行えます。
  • admin ユーザーはすべての権限を持っています。

より良いセキュリティのために、read ロールからはいくつかの権限(特に zk-read)を削除する必要があるかもしれません。これにより、admin のみが直接 ZK データベースを閲覧できるようになります。いくつかの実験が必要です。

また、core-admin-edit 権限を誰にも許可しないように設定しました。私のセットアップはクラウドモードであり、クラウドモードで CoreAdmin を使用して変更を行うのは大変なリスクがあります。スタンドアロンモードでもおそらく良いアイデアではありませんが、スタンドアロンモードでは重大な問題を引き起こす可能性ははるかに低いです。


{
  "authentication": {
    "class": "solr.BasicAuthPlugin",
    "credentials": {
      "admin": "REDACTED REDACTED",
      "read": "REDACTED REDACTED",
      "update": "REDACTED REDACTED"
    },
    "": { "v": 153 }
  },
  "authorization": {
    "class": "solr.RuleBasedAuthorizationPlugin",
    "permissions": [
      { "name": "read", "role": ["read"], "index": 1 },
      { "name": "collection-admin-read", "role": ["read"], "index": 2 },
      { "name": "config-read", "role": ["read"], "index": 3 },
      { "name": "core-admin-read", "role": ["read"], "index": 4 },
      { "name": "package-read", "role": ["read"], "index": 5 },
      { "name": "health", "role": ["read"], "index": 6 },
      { "name": "zk-read", "role": ["read"], "index": 7 },
      { "name": "schema-read", "role": ["read"], "index": 8 },
      { "name": "metrics-read", "role": ["read"], "index": 9 },
      { "name": "core-admin-edit", "role": null, "index": 10 },
      { "name": "update", "role": ["update"], "index": 11 },
      { "name": "all", "role": ["admin"], "index": 12 }
    ],
    "user-role": {
      "admin": ["admin", "read", "update"],
      "read": ["read"],
      "update": ["read", "update"]
    },
    "": { "v": 37 }
  }
}

ありがとうございます、
Shawn

返信投稿者:ks-solruserml-bot (2024/08/06 21:52 投稿)

こんにちは、Shawn

いつも素晴らしい回答ありがとうございます。

ありがとう!
Paul

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?