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

OpenSearch:アクセス認証ルール

最終更新日:Dec 28, 2024

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"
          }
      ]
    }

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 ユーザーに付与する認証ポリシーを構成します。