Alibaba Cloud アカウント内に作成されたすべての OpenSearch アプリケーションは、そのアカウントに属します。デフォルトでは、Alibaba Cloud アカウントは、アカウントに属するリソースに対するフルパーミッションを持っています。OpenSearch では、Resource Access Management (RAM) を使用して、RAM ユーザーに Alibaba Cloud アカウント内の OpenSearch リソースへのアクセスと管理のパーミッションを付与できます。
以下の点にご注意ください。
以前の OpenSearch コンソールとは異なり、新しい OpenSearch コンソールでは RAM ユーザーのパーミッション粒度が改善されています。RAM ユーザーとして新しい OpenSearch コンソールを使用するには、RAM ユーザーの RAM ポリシーを再設定する必要があります。
RAM ユーザーにパーミッションを付与するには、OpenSearch API または OpenSearch SDK V3 以降を使用する必要があります。この機能は、OpenSearch API または OpenSearch SDK の V2 以前のバージョンではサポートされていません。
サードパーティサービスを 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 インスタンスにアクセスするために必要なパーミッションを付与するポリシーの例を示しています。
リソースパラメーターの $regionid、$accountid、$dbinstanceid などの変数の詳細については、RAM を使用したリソース承認を参照してください。
ワイルドカード (
*
) を使用して、リソースパラメーターの変数を設定できます。{ "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 ユーザーにアタッチします。
以下の点にご注意ください。
ワイルドカード (*) を使用して、リソースパラメーターですべての種類のリソースを指定できます。
リソースパラメーターでアプリケーションの名前を指定できます。この場合、承認された RAM ユーザーは、アクションパラメーターが opensearch:* に設定されている場合でも、このアプリケーションに対してのみアクションパラメーターで指定されたすべてのアクションを実行できます。この制限は、opensearch:ListApp または opensearch:CreateApp アクションには適用されません。
アクションパラメーターで指定されたアクションは、リソースパラメーターで指定されたリソースにのみ適用されます。たとえば、RAM ユーザーに opensearch:ListApp および opensearch:CreateApp アクションを実行する権限を付与する場合は、ワイルドカード (*) を使用してリソースパラメーターですべてのアプリケーションを指定する必要があります。これらの 2 つのアクションは、指定されたアプリケーションに対してのみ他のアクションを実行する権限を RAM ユーザーに付与できるという点で、他のアクションとは異なります。
たとえば、すべてのカスタムポリシーでアプリケーション名を指定しているとします。この場合、RAM ユーザーに opensearch:ListApp および opensearch:CreateApp アクションを実行する権限を付与する場合は、2 つのアクションのアクションパラメーターを opensearch:* に設定した別のカスタムポリシーを作成し、このポリシーを RAM ユーザーにアタッチする必要があります。
OpenSearch コンソールでの RAM ユーザー認証の失敗に対する解決策
RAM ユーザーとして OpenSearch コンソールを使用すると、次の図に示すように、RAM ユーザー認証の失敗のエラーメッセージが表示される場合があります。 このエラーを解決するには、次の手順を実行します。
エラーメッセージの詳細を表示して、リクエスト内の POP アクションを見つけます。この例では、POP アクションは ListAppGroups です。POP アクションが DryRun で終わる場合は、DryRun を無視します。たとえば、POP アクションが CreateAppDryRun の場合、実際のアクションは CreateApp です。
アプリケーションの承認ルール トピックで、ListAppGroups POP アクションに対応する RAM アクションと リソースパラメーターの値の形式を見つけます。
ほとんどの場合、RAM アクションは POP アクションとは異なります。
RAM アクションに必要なパーミッションを RAM ユーザーに付与するようにカスタムポリシーを設定します。