Alibaba Cloud アカウント (root ユーザー) で作成した OpenSearch アプリケーションは、そのアカウントが所有するリソースです。デフォルトでは、アカウントはこれらのリソースを操作するための完全な権限を持っています。Alibaba Cloud の Resource Access Management (RAM) サービスを利用して、RAM ユーザーに OpenSearch リソースへのアクセスと管理の権限を付与できます。
注意:
-
新しいコンソールは、古いコンソールよりも詳細な RAM 権限を提供します。新しいコンソールで RAM ユーザーを使用する場合は、新しい RAM 権限付与ポリシーを作成する必要があります。
-
RAM ユーザー機能は、V3 以降の API および SDK バージョンでのみサポートされています。
-
サードパーティのデータソースプロダクトでは、RAM 権限システムを使用する必要があります。サードパーティプロダクト内で RAM ユーザーに対応する権限を付与する必要があります。ODPS サービスに対する RAM ユーザーへの権限付与はサポートされていません。これは、Alibaba Cloud アカウントが RAM ユーザーにプロジェクトを承認した後、クラウドの制限により、RAM ユーザーが Alibaba Cloud アカウントのすべてのプロジェクトをリストアップできないためです。したがって、RAM ユーザーはプロジェクトを OpenSearch のデータソースとして使用できません。まず Alibaba Cloud アカウントで ODPS に接続し、その後 RAM ユーザーで OpenSearch アプリケーションを操作することを推奨します。
-
RAM ユーザーを使用してコンソールで RDS データソースを設定する場合、RAM ユーザーに必要なデータソース権限も付与する必要があります。そうしないと、RDS サービスへの接続に失敗します。詳細については、RDS のアクセス権限付与のセクションをご参照ください。
-
SearchApp や SearchSuggest など、Search で始まるアクションは、現在、権限付与のための IP ベースの条件チェックをサポートしていません。これらのアクションで IP 条件を使用すると、エラーが発生します。
有効化時間
RAM ユーザーの権限への変更は、5 分の遅延後に有効になります。
最小共通権限セット
RAM ユーザーが OpenSearch コンソールにログインするには、最小限の共通権限セットが必要です。これには通常、アプリケーションの検索、アプリケーションリストの表示、アプリケーション詳細の表示、モニタリングとアラートへのアクセス、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"
}
モニタリングとアラートの権限
モニタリングとアラート機能は、Alibaba Cloud の 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 へのアクセスには、テーブルとフィールドの 2 つの API オペレーションが含まれます。RDS へのアクセスには IP アドレスを許可リストに追加する必要があるため、RAM ユーザーに IP 許可リストを設定する権限も付与する必要があります。(この権限がないと、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 権限の組み合わせが必要になることがよくあります。RAM ユーザーに Describe* および List* 権限を付与するか、ユースケースに基づいて特定の権限の組み合わせを割り当てることができます。
リファレンス (1)
このポリシーは、Alibaba Cloud アカウント 1234 配下の RAM ユーザーに、すべてのリージョンのすべてのアプリケーションを操作するための完全な権限を付与します。Alibaba Cloud アカウントのコンソールでこのポリシーを作成した後、RAM コンソールまたは RAM SDK を使用して RAM ユーザーに付与する必要があります。1. ポリシーを作成します。
{
"Statement": [
{
"Action": "opensearch:*",
"Effect": "Allow",
"Resource": "acs:opensearch:*:1234:apps/*"
}
],
"Version": "1"
}
2. このポリシーを指定された RAM ユーザーに付与します。
リファレンス (2)
このポリシーは、Alibaba Cloud アカウント 1234 配下の RAM ユーザーに、中国 (杭州) リージョンのすべてのアプリケーションを操作するための完全な権限を付与します。Alibaba Cloud アカウントのコンソールでこのポリシーを作成した後、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は、同じステートメント内のresourceフォーマットに対応している必要があります。たとえば、opensearch:ListAppとopensearch:CreateAppはすべてのアプリケーションに適用されるため、リソースには*を使用する必要があります。これら 2 つのアクションは、他のアクションとは異なるリソースフォーマットを必要とすることにご注意ください。 -
権限付与ポリシーが特定のアプリケーションにのみ権限を付与しているが、
opensearch:ListAppとopensearch:CreateAppの権限も必要な場合は、別のポリシーを作成する必要があります。この新しいポリシーには、これら 2 つのアクションを含め、resourceフォーマットを*に設定する必要があります。その後、両方のポリシーを指定された RAM ユーザーにアタッチします。
コンソールの認証問題のトラブルシューティング
RAM ユーザーがコンソールにアクセスすると、「RAM ユーザーの認証に失敗しました」というメッセージが表示されることがあります。このエラーが発生した場合は、まず [エラー詳細] リンクをクリックします。次に、PARAMS セクションで action フィールドを見つけます。その値が、リクエストされた POP アクションです。次の手順に従ってください:
-
リクエストされた POP アクション (例:
ListAppGroups) を見つけます。actionにDryRunサフィックスが付いている場合、対応するアクションはサフィックスなしの名前です。たとえば、CreateAppDryRunはアクションCreateAppに対応します。 -
「アプリケーション権限付与ルールリスト」に移動し、
ListAppGroupsに対応する RAM アクションとリソースパターンを見つけます。(注意:RAM アクションは POP アクションと同じではない場合があります。)
-
最後に、必要な権限を RAM ユーザーに付与する権限付与ポリシーを作成します。