デフォルトでは、ご利用の Alibaba Cloud アカウント (root ユーザー) は OpenSearch アプリケーションを管理するための完全な権限を持ちます。Alibaba Cloud の Resource Access Management (RAM) サービスを使用して、RAM ユーザーに OpenSearch リソースへのアクセスおよび管理権限を付与できます。
注記:
-
新コンソールでは、旧バージョンよりも細かい RAM 権限が提供されています。新コンソールで RAM ユーザーを使用するには、新しい RAM 権限付与ポリシーを作成する必要があります。
-
RAM ユーザー機能は、API および SDK バージョン 3.0 以降でのみサポートされ、V2 ではサポートされていません。
-
サードパーティ製データソースプロダクトは、RAM 権限モデルに準拠する必要があります。サードパーティ製プロダクト内で RAM ユーザーに対応する権限を付与する必要があります。ODPS サービスについては、RAM ユーザーに権限を付与することはできません。これは、プラットフォームの制限により、メインアカウントが特定のプロジェクトをそのユーザーに許可した後でも、RAM ユーザーがメインアカウント配下のすべてのプロジェクトを一覧表示できないためです。その結果、RAM ユーザーは OpenSearch 内でそのプロジェクトをデータソースとして参照できません。そのため、まずメインアカウントを使用して ODPS に接続し、その後 RAM ユーザーを使用して OpenSearch アプリケーションを操作することを推奨します。
-
RAM ユーザーを使用してコンソール上で RDS データソースを設定するには、データソースに対する RAM ユーザーの権限も付与する必要があります。これを行わないと、RDS サービスへの接続が失敗します。詳細については、以下の「RDS アクセス権限付与」をご参照ください。
-
Searchで始まる操作(主にSearchAppおよびSearchSuggest)は、現時点で IP アドレスを使用した条件付き認証をサポートしていません。このような条件を設定すると、認証が失敗します。
権限の有効タイミング
RAM ユーザーに付与された権限は、権限付与ポリシーの作成または更新から約 5 分後に有効になります。
最小共通権限セット
OpenSearch コンソールにアクセスするには、RAM ユーザーは複数の権限を組み合わせる必要があります。以下のセクションでは、アプリケーションの検索、アプリケーションの一覧表示、アプリケーション詳細の閲覧、モニタリングとアラームへのアクセス、RDS アクセスの権限付与 を含む、一般的な最小権限セットを参考として提供します。
最小検索権限
SDK を使用してアプリケーションに検索リクエストを送信し、ドキュメント取得をテストするには、そのアプリケーションを検索する権限が必要です。次の例では、app_schema_demo という名前のアプリケーションに対してドキュメント取得テストを実行する権限を付与しています。
{
"Statement": [
{
"Effect": "Allow",
"Action": "opensearch:SearchApp",
"Resource": "acs:opensearch:*:*:apps/app_schema_demo"
}
],
"Version": "1"
}
アプリケーション一覧表示権限
RAM ユーザーがコンソールでアプリケーション一覧を表示するには、以下の権限が必要です。
{
"Statement": [
{
"Action": [
"opensearch:ListAppGroup",
"opensearch:DescribeAppStatistics",
"opensearch:ListAppGroupErrors"
],
"Effect": "Allow",
"Resource": "acs:opensearch:*:*:app-groups/*"
}
],
"Version": "1"
}
アプリケーション詳細閲覧権限
モニタリングおよびアラーム機能はアプリケーション詳細ページに統合されているため、RAM ユーザーがこれらの機能を使用するには、アプリケーション詳細を閲覧する権限が必要です。次の例では、app_schema_demo という名前のアプリケーションの詳細を閲覧する権限を付与しています。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"opensearch:DescribeAppGroup",
"opensearch:ListApp",
"opensearch:DescribeApp"
],
"Resource": "acs:opensearch:*:*:app-groups/app_schema_demo"
},
{
"Action": "opensearch:ListUserAnalyzers",
"Effect": "Allow",
"Resource": "acs:opensearch:*:*:user-analyzers/*"
}
],
"Version": "1"
}
モニタリングとアラーム権限
モニタリングおよびアラーム機能は CloudMonitor 上に構築されています。RAM ポリシーテンプレート内で AliyunCloudMonitorReadOnlyAccess を検索することで、CloudMonitor の読み取り専用ポリシーを見つけることができます。
{
"Version": "1",
"Statement": [
{
"Action": [
"cms:Get*",
"cms:List*",
"cms:Query*",
"cms:BatchQuery*"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "opensearch:DescribeApp",
"Resource": "acs:opensearch:*:*:app-groups/*",
"Effect": "Allow"
}
]
}
RDS アクセス権限付与
RDS データソースへのアクセスには、tables および fields API が関係します。RDS への接続には IP アドレスを IP ホワイトリストに追加する必要があるため、RAM ユーザーに IP ホワイトリストを変更する権限も付与する必要があります。この権限がない場合、「RDS IP ホワイトリストを設定できませんでした」というエラーが表示され、RDS への接続が失敗します。 RDS 権限は、RAM コンソール で直接設定できます。概要ページでカスタム権限付与ポリシーを作成するかロールを割り当てた後、ユーザー管理ページでそのポリシーを RAM ユーザーにアタッチしてください(RDS 権限付与ドキュメントをご参照ください)。以下のポリシーは、OpenSearch が RDS にアクセスするために必要な最小権限セットを示しています。
-
変数の意味について を参照し、
Resource要素内の $regionid、$accountid、$dbinstanceid などの変数を理解してください。 -
Resource要素内のパラメーター値には、ワイルドカード文字*を使用することもできます。{ "Version": "1", "Statement": [ { "Action": "rds:DescribeDBInstanceAttribute", "Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid", "Effect": "Allow" }, { "Action": "rds:ModifySecurityIps", "Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid", "Effect": "Allow" }, { "Action": "rds:DescribeDBInstanceIPArrayList", "Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid", "Effect": "Allow" }, { "Action": "rds:DescribeDBInstanceNetInfoForChannel", "Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid", "Effect": "Allow" } ] }
ランタイム API 権限
検索、データプッシュ、サジェストに関する API 呼び出しを行うには、以下の権限を追加してください。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"opensearch:PushDoc",
"opensearch:SearchApp"
],
"Resource": [
"acs:opensearch:$regionId:*:apps/$appGroupName",
"acs:opensearch:$regionId:*:app-groups/$appGroupName"
]
},
{
"Action": "opensearch:SearchSuggest",
"Effect": "Allow",
"Resource": "acs:opensearch:$regionId:*:suggestions/$suggestionIdentity"
}
],
"Version": "1"
}
権限付与の例
RAM ユーザーがコンソール上でタスクを実行できるようにするには、通常、複数の Action 権限を組み合わせて付与する必要があります。Describe* や List* のような広範な権限を付与することもできますし、ニーズに合わせてより具体的な権限セットを作成することもできます。
例 1
メインアカウント 1234 配下の RAM ユーザーに、すべてのリージョンにおけるすべてのアプリケーションに対する完全な権限を付与します。このポリシーを作成した後、RAM コンソールまたは RAM SDK を使用して、RAM ユーザーにポリシーをアタッチする必要があります。1. ポリシーを作成します。
{
"Statement": [
{
"Action": "opensearch:*",
"Effect": "Allow",
"Resource": "acs:opensearch:*:1234:apps/*"
}
],
"Version": "1"
}
2. ポリシーを指定の RAM ユーザーにアタッチします。
例 2
メインアカウント 1234 配下の RAM ユーザーに、中国 (杭州) リージョン (cn-hangzhou) におけるすべてのアプリケーションに対する完全な権限を付与します。このポリシーを作成した後、RAM コンソールまたは RAM SDK を使用して、RAM ユーザーにポリシーをアタッチする必要があります。
1. ポリシーを作成します。
{
"Statement": [
{
"Action": "opensearch:*",
"Effect": "Allow",
"Resource": "acs:opensearch:cn-hangzhou:1234:apps/*"
}
],
"Version": "1"
}
2. ポリシーを指定の RAM ユーザーにアタッチします。
注記:
-
リソース形式でワイルドカード文字 (*) を使用すると、すべてのリソースタイプに一致します。
-
リソース形式で特定のアプリケーション名を指定した場合、
Actionがopensearch:*であっても、そのアプリケーションに関連する操作にのみ権限が付与されます。opensearch:ListAppやopensearch:CreateAppの権限は含まれません。 -
各
Actionは、正しいリソース形式に対応している必要があります。たとえば、opensearch:ListAppおよびopensearch:CreateAppはすべてのアプリケーションに適用されるため、リソースを*として指定する必要があります。これらの 2 つの操作は、他の操作とは異なるリソース形式を使用することにご注意ください。 -
権限付与ポリシーに特定のアプリケーションのリソースのみが含まれているが、
opensearch:ListAppおよびopensearch:CreateAppの権限も必要となる場合は、これらの 2 つの操作を含み、リソース形式を*とした追加のポリシーを作成し、RAM ユーザーにアタッチする必要があります。
コンソール認証問題のトラブルシューティング
RAM ユーザーがコンソールにアクセスすると、「RAM ユーザー認証に失敗しました」というメッセージが表示される場合があります。ダイアログボックス内の エラーの詳細 をクリックすると、REQUEST_ID、METHOD、URL、PARAMS、BODY、RESPONSE フィールドなど、詳細なリクエスト情報が表示されます。問題を解決するには、以下の手順を実行してください。
-
エラー詳細の PARAMS フィールドで、要求された POP 操作(例:
ListAppGroups)を見つけます。操作名にDryRunサフィックス(例:CreateAppDryRun)が付いている場合は、対応する操作はサフィックスを除いたもの(CreateApp)となります。 -
アプリケーション権限付与ルール一覧 で、
ListAppGroupsに対応する RAM 操作 および リソースパターン を確認します。(注:RAM 操作は POP 操作と同一とは限りません。) -
必要な権限を含む権限付与ポリシーを作成し、RAM ユーザーにアタッチします。