2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OpenSearch】Security Pluginで一時的に全権限ロールを作成・削除して動作確認する手順

Posted at

はじめに

OpenSearchのSecurity Pluginを利用していると、移行や検証時に 「一時的に全権限を持つロールを作成して確認したい」 ケースがあります。
本記事では、curl コマンドを利用して以下のことを行いました。

  • 一時的に全権限を持つロール default_role の作成
  • rolesmapping によるユーザー・ロールの紐付け
  • 権限付与の確認 (authinfo)
  • 作成したロールやマッピングの削除

あくまで検証や移行時の一時的な対応として利用してください。
本番運用環境ではセキュリティリスクがあるため、恒久利用は避けるべきです。

手順

1. ロールの存在確認

まずは default_role が存在しないことを確認します。

GET rolesmapping default_role
$ curl -u admin:'<PW>' -k \
  -X GET "https://<endpoint>/_plugins/_security/api/rolesmapping/default_role"

{"status":"NOT_FOUND","message":"Resource 'default_role' not found."}

2. 全権限ロールの作成

クラスタ・インデックス・テナントに対して全権限を持つ default_role を作成します。

PUT roles default_role
$ curl -u admin:'<PW>' -k \
  -H "Content-Type: application/json" \
  -X PUT "https://<endpoint>/_plugins/_security/api/roles/default_role" \
  -d '{
    "description": "Temporary all-access role for controlled migration",
    "cluster_permissions": ["*"],
    "index_permissions": [{
      "index_patterns": ["*"],
      "fls": [],
      "masked_fields": [],
      "allowed_actions": ["*"]
    }],
    "tenant_permissions": [{
      "tenant_patterns": ["global_tenant"],
      "allowed_actions": ["kibana_all_write"]
    }]
  }'

{"status":"CREATED","message":"'default_role' created."}

3. ロールマッピングの作成

管理ユーザーやバックエンドロールにマッピングします。

PUT rolesmapping default_role
$ curl -u admin:'<PW>' -k \
  -H "Content-Type: application/json" \
  -X PUT "https://<endpoint>/_plugins/_security/api/rolesmapping/default_role" \
  -d '{
    "hosts": [],
    "users": [],
    "backend_roles": ["admin"],
    "and_backend_roles": []
  }'

{"status":"CREATED","message":"'default_role' created."}

4. 権限付与の確認

authinfo APIを利用して現在のユーザー情報を確認します。

GET authinfo
$ curl -u admin:'<PW>' -k \
  -X GET "https://<endpoint>/_plugins/_security/authinfo"

{"user":"User [name=admin, backend_roles=[], requestedTenant=null]","user_name":"admin","user_requested_tenant":null,"backend_roles":[],"custom_attribute_names":[],"roles":["security_manager","all_access"],"tenants":{"global_tenant":true,"admin":true},"principal":null,"peer_certificates":"0","sso_logout_url":null}

5. 作成したロールとマッピングを削除

不要になったら削除します。

DELETE rolesmapping default_role
$ curl -u admin:'<PW>' -k -X DELETE \
  "https://<endpoint>/_plugins/_security/api/rolesmapping/default_role"

{"status":"OK","message":"'default_role' deleted."}
DELETE roles default_role
$ curl -u admin:'<PW>' -k -X DELETE \
  "https://<endpoint>/_plugins/_security/api/roles/default_role"

{"status":"OK","message":"'default_role' deleted."}

6. 全ユーザー/ロールに一時的に付与するケース

テスト目的で * を指定してすべてのユーザーに付与することも可能です。

PUT rolesmapping default_role
$ curl -u admin:'<PW>' -k \
  -H "Content-Type: application/json" \
  -X PUT "https://<endpoint>/_plugins/_security/api/rolesmapping/default_role" \
  -d '{
    "hosts": [],
    "users": [],
    "backend_roles": ["*"],
    "and_backend_roles": []
  }'

{"status":"CREATED","message":"'default_role' created."}

確認すると以下のように users=["*"] が設定されています。

GET rolesmapping default_role
$ curl -u admin:'<PW>' -k \
  -X GET "https://<endpoint>/_plugins/_security/api/rolesmapping/default_role"

{"default_role":{"hosts":[],"users":["*"],"reserved":false,"hidden":false,"backend_roles":[],"and_backend_roles":[]}}

まとめ

  • roles API で権限ロールを作成
  • rolesmapping API でユーザーやロールに紐付け
  • authinfo API で権限の反映を確認
  • 不要になったら DELETE で削除

おわりに

今回紹介したように、一時的に「全アクセス権限」を持つロールを作成して確認することができます。
ただし セキュリティリスクが非常に高いため、本番環境での恒常利用は避けるようにしてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?