すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:アクセス承認ルール

最終更新日:Dec 28, 2024

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 ユーザー認証の失敗のエラーメッセージが表示される場合があります。 image..pngこのエラーを解決するには、次の手順を実行します

  • エラーメッセージの詳細を表示して、リクエスト内の POP アクションを見つけます。この例では、POP アクションは ListAppGroups です。POP アクションが DryRun で終わる場合は、DryRun を無視します。たとえば、POP アクションが CreateAppDryRun の場合、実際のアクションは CreateApp です。

  • アプリケーションの承認ルール トピックで、ListAppGroups POP アクションに対応する RAM アクションリソースパラメーターの値の形式を見つけます。

    ほとんどの場合、RAM アクションは POP アクションとは異なります。

  • RAM アクションに必要なパーミッションを RAM ユーザーに付与するようにカスタムポリシーを設定します。