Alibaba Cloud アカウント内で作成されたすべての OpenSearch アプリケーションは、そのアカウントに属します。 デフォルトでは、Alibaba Cloud アカウントは、アカウントに属するリソースに対するすべての権限を持っています。 OpenSearch では、Resource Access Management (RAM) を使用して、RAM ユーザーに Alibaba Cloud アカウント内の OpenSearch リソースへのアクセスと管理の権限を付与できます。
以前のバージョンの RAM コンソールと比較して、新しいバージョンではより詳細な権限管理がサポートされています。 新しいバージョンの RAM コンソールで RAM ユーザーに権限を付与するには、RAM 権限付与ポリシーを再構成する必要があります。
RAM ユーザーに権限を付与するには、OpenSearch API または OpenSearch SDK V3 以降を使用する必要があります。 この機能は、V2 以前のバージョンの OpenSearch API または OpenSearch SDK ではサポートされていません。
サードパーティサービスを OpenSearch アプリケーションのデータソースとして使用する場合は、RAM 権限システムのルールに従って、RAM ユーザーにサードパーティサービスに対する権限を付与する必要があります。 RAM ユーザーに MaxCompute に対する権限を付与することはできません。 これは、対応する Alibaba Cloud アカウントの MaxCompute プロジェクトへのアクセスが承認された RAM ユーザーが、その Alibaba Cloud アカウントに属する他のリソースにアクセスできない場合があるためです。 その結果、RAM ユーザーはプロジェクトをデータソースとして参照して OpenSearch に接続できない場合があります。 Alibaba Cloud アカウントを使用して MaxCompute プロジェクトをアプリケーションのデータソースとして構成し、RAM ユーザーとしてアプリケーションを管理することをお勧めします。
RAM ユーザーを使用して OpenSearch コンソールで ApsaraDB RDS インスタンスをアプリケーションのデータソースとして構成する場合は、RAM ユーザーにインスタンスに対する必要な権限を付与する必要があります。 そうしないと、ApsaraDB RDS への接続に失敗したことを示すエラーメッセージが表示されます。 RAM ユーザーに ApsaraDB RDS インスタンスに対する権限を付与する方法の詳細については、このトピックの「ApsaraDB RDS インスタンスにアクセスするために必要な権限」セクションをご参照ください。
:SearchApp や :SearchSuggest など、:Search で始まる操作は、IP アドレスベースの条件付き権限付与をサポートしていません。 このような操作に対して IP ベースの条件付き権限付与を構成すると、エラーが発生します。
権限付与が有効になるまでの時間
RAM ユーザーに権限を付与するか、RAM ユーザーの権限を更新した後、付与または更新された権限は 5 分で有効になります。
一般的な最小権限セット
RAM ユーザーとして OpenSearch コンソールを使用する場合は、RAM ユーザーに必要な権限を付与する必要があります。 一般的な最小権限セットには、アプリケーションでデータを検索し、アプリケーションリストを表示し、アプリケーションの詳細を表示し、監視とアラートを構成し、ApsaraDB RDS インスタンスにアクセスするために必要な権限が含まれています。 以下のセクションでは、これらの権限について説明します。
アプリケーションでデータを検索するための権限
OpenSearch SDK を使用して検索リクエストを開始するか、RAM ユーザーとしてアプリケーションのドキュメント取得機能をテストする場合は、RAM ユーザーにアプリケーションからデータを検索する権限が必要です。 次のサンプルコードは、app_schema_demo という名前のアプリケーションからドキュメントを取得するために必要な権限を付与するポリシーの例を示しています。
{
"Statement": [
{
"Effect": "Allow",
"Action": "opensearch:SearchApp",
"Resource": "acs:opensearch:*:*:apps/app_schema_demo"
}
],
"Version": "1"
}アプリケーションリストを表示するための権限
RAM ユーザーとして OpenSearch コンソールにログインした後にアプリケーションを表示する場合は、RAM ユーザーにアプリケーションリストを表示する権限が必要です。
{
"Statement": [
{
"Action": [
"opensearch:ListAppGroup",
"opensearch:DescribeAppStatistics",
"opensearch:ListAppGroupErrors"
],
"Effect": "Allow",
"Resource": "acs:opensearch:*:*:app-groups/*"
}
],
"Version": "1"
}アプリケーションの詳細を表示するための権限
OpenSearch コンソールは、アプリケーションの詳細ページで監視とアラート機能を提供します。 RAM ユーザーとして OpenSearch コンソールでアプリケーションの詳細を表示する場合は、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"
}監視とアラートを構成するための権限
OpenSearch は、Alibaba Cloud の CloudMonitor サービスに基づいて監視とアラート機能を提供します。 システムポリシー AliyunCloudMonitorReadOnlyAccess は、CloudMonitor に対する読み取り専用権限を付与します。 このポリシーは、RAM コンソールで検索できます。
{
"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"
}
]
}ApsaraDB RDS インスタンスにアクセスするための権限
OpenSearch は、テーブルまたはフィールドに基づいて ApsaraDB RDS インスタンスからデータを取得できます。 ApsaraDB RDS は、ホワイトリストを使用してアクセス制御を実装します。 OpenSearch を使用して ApsaraDB RDS インスタンスからデータを取得する場合は、RAM ユーザーに ApsaraDB RDS インスタンスのホワイトリストを構成する権限を付与する必要があります。 そうしないと、OpenSearch が ApsaraDB RDS インスタンスに接続するときに、RAM ユーザーが ApsaraDB RDS インスタンスの IP アドレスホワイトリストを構成する権限を持っていないことを示すエラーが発生します。 RAM コンソールで RAM ユーザーを承認するには、次の手順を実行します。[概要] ページでカスタム権限付与ポリシーと RAM ユーザーを作成します。 次に、[ユーザー] ページでポリシーを RAM ユーザーにアタッチします。 詳細については、「RAM を使用して ApsaraDB RDS 権限を管理する」をご参照ください。 次のサンプルコードは、OpenSearch で ApsaraDB RDS インスタンスにアクセスするために必要な権限を付与する権限付与ポリシーの例を示しています。
Resource パラメーターの $regionid、$accountid、$dbinstanceid などの変数については、「リソース承認に RAM を使用する」をご参照ください。
ワイルドカード (
*) を使用して、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 ユーザーに権限を付与する前に、どのアプリケーションにどの権限を付与するかを決定する必要があります。 ほとんどの場合、RAM ユーザーとして OpenSearch コンソールを使用する場合は、RAM ユーザーに必要な操作を実行するための権限を付与する必要があります。 たとえば、RAM ユーザーに Describe* 操作と List* 操作を実行するための権限を付与できます。 必要に応じて、RAM ユーザーにカスタム権限セットを付与することもできます。
例 1
ID が 1234 の Alibaba Cloud アカウントに属する RAM ユーザーに、すべてのリージョンのすべての OpenSearch アプリケーションに対するすべての権限を付与するとします。 この場合、Alibaba Cloud アカウントを使用して RAM コンソールで権限付与ポリシーを作成し、そのポリシーを RAM ユーザーにアタッチできます。 RAM SDK を使用して RAM ユーザーを承認することもできます。 RAM ユーザーを承認するには、次の手順を実行します。 1. 権限付与ポリシーを作成します。
{
"Statement": [
{
"Action": "opensearch:*",
"Effect": "Allow",
"Resource": "acs:opensearch:*:1234:apps/*"
}
],
"Version": "1"
}2. 権限付与ポリシーを RAM ユーザーにアタッチします。
例 2
ID が 1234 の Alibaba Cloud アカウントに属する RAM ユーザーに、中国 (杭州) リージョンのすべての OpenSearch アプリケーションに対するすべての権限を付与するとします。 この場合、Alibaba Cloud アカウントを使用して RAM コンソールで権限付与ポリシーを作成し、そのポリシーを RAM ユーザーにアタッチできます。 RAM SDK を使用して RAM ユーザーを承認することもできます。 RAM ユーザーを承認するには、次の手順を実行します。
1. 権限付与ポリシーを作成します。
{
"Statement": [
{
"Action": "opensearch:*",
"Effect": "Allow",
"Resource": "acs:opensearch:cn-hangzhou:1234:apps/*"
}
],
"Version": "1"
}2. 権限付与ポリシーを RAM ユーザーにアタッチします。
ワイルドカード (*) を使用して、Resource パラメーターですべての種類のリソースを指定できます。
Resource パラメーターでアプリケーションの名前を指定できます。 この場合、承認された RAM ユーザーは、Action パラメーターが opensearch:* に設定されている場合でも、このアプリケーションに対してのみ Action パラメーターで指定されたすべてのアクションを実行できます。 この制限は、opensearch:ListApp 操作と opensearch:CreateApp 操作には適用されません。
Action パラメーターで指定されたアクションは、Resource パラメーターで指定されたリソースにのみ適用されます。 たとえば、RAM ユーザーに opensearch:ListApp 操作と opensearch:CreateApp 操作を実行する権限を付与する場合は、ワイルドカード (*) を使用して Resource パラメーターですべてのアプリケーションを指定する必要があります。 これらの 2 つの操作は、指定されたアプリケーションに対してのみ他の操作を実行する権限を RAM ユーザーに付与できるという点で、他の操作とは異なります。
すべての権限付与ポリシーでアプリケーション名を指定しています。 この場合、RAM ユーザーに opensearch:ListApp 操作と opensearch:CreateApp 操作を実行する権限も付与する場合は、2 つの操作に対して Action パラメーターを opensearch:* に設定した別の権限付与ポリシーを作成し、このポリシーを RAM ユーザーにアタッチする必要があります。
OpenSearch コンソールでの RAM ユーザー認証の失敗に対する解決策
RAM ユーザーとして OpenSearch コンソールを使用すると、RAM ユーザー認証の失敗のエラーメッセージが表示される場合があります。
このエラーを解決するには、次の手順を実行します。
エラーメッセージの詳細を表示して、リクエスト内の POP アクションを見つけます。 この例では、POP アクションは ListAppGroups です。 POP アクションが DryRun で終わる場合は、DryRun を無視します。 たとえば、POP アクションが CreateAppDryRun の場合、実際のアクションは CreateApp です。
「アプリケーションの承認ルール」トピックで、ListAppGroups POP アクションに対応する RAM アクションと Resource パラメーターの値の形式を見つけます。
ほとんどの場合、RAM アクションは POP アクションとは異なります。
RAM アクションに必要な権限を RAM ユーザーに付与する権限付与ポリシーを構成します。