

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon OpenSearch Serverless のセキュリティの概要
<a name="serverless-security"></a>

Amazon OpenSearch Serverless のセキュリティは、次の点で Amazon OpenSearch Service のセキュリティと根本的に異なります。


| 機能 | OpenSearch Service | OpenSearch サーバーレス | 
| --- | --- | --- | 
| データアクセスコントロール | きめ細かなアクセスコントロールと IAM ポリシーによりデータアクセスが決定します。 | データアクセスポリシーによりデータアクセスが決定します。 | 
| 保管時の暗号化 | ドメインについては、保管時の暗号化はオプションとなります。 | コレクションについては、保管時の暗号化は必須となります。 | 
| セキュリティの設定および管理者 | ネットワーク、暗号化、およびデータアクセスは、ドメインごとに個別に設定する必要があります。 | セキュリティポリシーを使用して、複数のコレクションのセキュリティ設定を大規模に管理できます。 | 

次の図は、機能的なコレクションを設定するセキュリティのコンポーネントを示しています。コレクションには、暗号化キー、ネットワークアクセス設定、リソースへのアクセス許可を付与するデータアクセスポリシーが割り当てられている必要があります。

![\[Diagram showing encryption, network, data access, and authentication policies for a collection.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-security.png)


**Topics**
+ [暗号化ポリシー](#serverless-security-encryption)
+ [ネットワークポリシー](#serverless-security-network)
+ [データアクセスポリシー](#serverless-security-data-access)
+ [IAM および SAML 認証](#serverless-security-authentication)
+ [インフラストラクチャセキュリティ](#serverless-infrastructure-security)
+ [Amazon OpenSearch Serverless でのセキュリティの開始方法](serverless-tutorials.md)
+ [Amazon OpenSearch Serverless 向けの アイデンティティとアクセス管理](security-iam-serverless.md)
+ [Amazon OpenSearch Serverless の暗号化](serverless-encryption.md)
+ [Amazon OpenSearch Serverless でのネットワークアクセス](serverless-network.md)
+ [Amazon OpenSearch Serverless での FIPS コンプライアンス](fips-compliance-opensearch-serverless.md)
+ [Amazon OpenSearch Serverless のデータアクセスコントロール](serverless-data-access.md)
+ [を介したデータプレーンアクセス AWS PrivateLink](serverless-vpc.md)
+ [を介したコントロールプレーンアクセス AWS PrivateLink](serverless-vpc-cp.md)
+ [Amazon OpenSearch Serverless での SAML 認証](serverless-saml.md)
+ [Amazon OpenSearch Serverless のコンプライアンス検証](serverless-compliance-validation.md)

## 暗号化ポリシー
<a name="serverless-security-encryption"></a>

[暗号化ポリシー](serverless-encryption.md)は、コレクションを AWS 所有のキー またはカスタマーマネージドキーで暗号化するかどうかを定義します。暗号化ポリシーは、**リソースパターン**と**暗号化キー**の 2 つの要素で構成されます。リソースパターンは、ポリシーが適用される 1 つまたは複数のコレクションを定義します。暗号化キーは、関連するコレクションを保護する方法を決定します。

ポリシーを複数のコレクションに適用するには、ポリシーのルールにワイルドカード (\$1) を含めます。例えば、次のポリシーは、名前が「logs」で始まるすべてのコレクションに適用されます。

![\[Input field for specifying a prefix term or collection name, with "logs*" entered.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-security-encryption.png)


暗号化ポリシーは、特にプログラムで行う場合に、コレクションの作成と管理のプロセスを効率化します。コレクションは名前を指定することで作成でき、作成時に暗号化キーが自動的に割り当てられます。

## ネットワークポリシー
<a name="serverless-security-network"></a>

[ネットワークポリシー](serverless-network.md)は、コレクションにプライベートでアクセスするか、パブリックネットワークからインターネット経由でアクセスするかを定義します。プライベートコレクションには、OpenSearch Serverless が管理する VPC エンドポイント、または*AWS のサービス プライベートアクセス*を使用して Amazon Bedrock などの特定の AWS のサービス からアクセスできます。ネットワークポリシーは、暗号化ポリシーと同様に複数のコレクションに適用できるため、多数のコレクションのネットワークアクセスを大規模に管理できます。

ネットワークポリシーは、**アクセスタイプ**と**リソースタイプ**の 2 つの要素で構成されます。アクセスタイプはパブリックでもプライベートでもかまいません。リソースタイプによって、選択したアクセスがコレクションエンドポイント、OpenSearch Dashboards エンドポイント、またはその両方に適用されるかが決まります。

![\[Access type and resource type options for configuring network policies in OpenSearch.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-security-network.png)


ネットワークポリシー内で VPC アクセスを設定する場合は、まず [OpenSearch Serverless マネージド VPC エンドポイント](serverless-vpc.md)を 1 つ以上作成する必要があります。これらのエンドポイントを使用すると、インターネットゲートウェイ、NAT デバイス、VPN 接続、または Direct Connect 接続を使用せずに、VPC 内にあるかのように OpenSearch Serverless にアクセスできます。

へのプライベートアクセス AWS のサービス は、コレクションの OpenSearch エンドポイントにのみ適用 AWS のサービス でき、OpenSearch Dashboards エンドポイントには適用されません。OpenSearch Dashboards へのアクセスを許可することはできません。

## データアクセスポリシー
<a name="serverless-security-data-access"></a>

[データアクセスポリシー](serverless-data-access.md)は、ユーザーがコレクション内のデータにアクセスする方法を定義します。データアクセスポリシーは、特定のパターンに一致するコレクションとインデックスにアクセス許可を自動的に割り当てることにより、大規模なコレクションを管理するのに役立ちます。複数のポリシーを単一のリソースに適用できます。

データアクセスポリシーはルールのセットで構成され、それぞれに 3 つの構成要素 (**リソースタイプ**、**付与されたリソース**、および**アクセス許可**のセット) があります。リソースタイプはコレクションでもインデックスでもかまいません。付与されたリソースは、コレクション名またはインデックス名、あるいはワイルドカード (\$1) 付きのパターンにすることができます。アクセス許可のリストは、ポリシーがアクセスを許可する [OpenSearch API オペレーション](serverless-genref.md#serverless-operations)を指定します。さらにポリシーには、アクセスを許可する IAM ロール、ユーザー、SAML ID を指定する**プリンシパル**のリストが含まれています。

![\[Selected principals and granted resources with permissions for collection and index access.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-data-access.png)


データアクセスポリシーの形式の詳細については、[ポリシー構文](serverless-data-access.md#serverless-data-access-syntax)を参照してください。

データアクセスポリシーを作成する前に、ポリシーでアクセスを提供するための、1 つ、または複数の IAM ロールもしくはユーザー、または SAML ID が必要です。詳細については、次のセクションを参照ください。

**注記**  
コレクションをパブリックアクセスからプライベートアクセスに切り替えると、OpenSearch Serverless コレクションコンソールの [インデックス] タブが削除されます。

## IAM および SAML 認証
<a name="serverless-security-authentication"></a>

 IAM プリンシパルおよび SAML ID は、データアクセスポリシーの構成要素の 1 つです。アクセスポリシーの `principal` ステートメントには、IAM ロール、ユーザー、および SAML ID を含めることができます。その後、関連するポリシールールで指定したアクセス許可がこれらのプリンシパルに付与されます。

```
[
   {
      "Rules":[
         {
            "ResourceType":"index",
            "Resource":[
               "index/marketing/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie"
      ]
   }
]
```

SAML 認証は、OpenSearch Serverless 内で直接設定します。詳細については、「[Amazon OpenSearch Serverless での SAML 認証](serverless-saml.md)」を参照してください。

## インフラストラクチャセキュリティ
<a name="serverless-infrastructure-security"></a>

Amazon OpenSearch Serverless は AWS グローバルネットワークセキュリティで保護されています。セキュリティサービスと AWS がインフラストラクチャ AWS を保護する方法については、[AWS 「 クラウドセキュリティ](https://aws.amazon.com/security/)」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して AWS 環境を設計するには、*「Security Pillar AWS Well‐Architected Framework*」の[「Infrastructure Protection](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)」を参照してください。

 AWS 公開された API コールを使用して、ネットワーク経由で Amazon OpenSearch Serverless にアクセスします。クライアントは Transport Layer Security (TLS) をサポートしている必要があります。TLS 1.2 は必須ですが、TLS 1.3 を推奨します。TLS 1.3 でサポートされている暗号のリストについては、Elastic Load Balancing ドキュメントの「[TLS protocols and ciphers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#tls-protocols-ciphers)」を参照してください。

また、アクセスキー ID と、IAM プリンシパルに関連付けられているシークレットアクセスキーを使用してリクエストに署名する必要があります。または、[AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) を使用して、一時的なセキュリティ認証情報を生成し、リクエストに署名することもできます。

# Amazon OpenSearch Serverless でのセキュリティの開始方法
<a name="serverless-tutorials"></a>

次のチュートリアルは、Amazon OpenSearch Serverless の使用を開始するのに役立ちます。どちらのチュートリアルでも基本的な手順は同じですが、一方はコンソールを使用し、もう一方は AWS CLIを使用します。

これらのチュートリアルのユースケースは簡素化されていることに注意してください。ネットワークおよびセキュリティポリシーは、かなりオープンです。本番環境のワークロードでは、SAML 認証、VPC アクセス、制限付きのデータアクセスポリシーなど、より強固なセキュリティ機能を設定することをお勧めします。

**Topics**
+ [チュートリアル: Amazon OpenSearch Serverless でのセキュリティの開始方法 (コンソール)](gsg-serverless.md)
+ [チュートリアル: Amazon OpenSearch Serverless (CLI) でのセキュリティの開始方法](gsg-serverless-cli.md)

# チュートリアル: Amazon OpenSearch Serverless でのセキュリティの開始方法 (コンソール)
<a name="gsg-serverless"></a>

このチュートリアルでは、Amazon OpenSearch Serverless コンソールを使用してセキュリティポリシーを作成および管理するための基本的な手順を説明します。

このチュートリアルでは、次の手順を行います。

1. [アクセス許可を設定](#gsgpermissions)

1. [暗号化ポリシーを作成](#gsg-encryption)

1. [ネットワークポリシーを作成する](#gsg-network)

1. [データアクセスポリシーを設定する](#gsg-data-access)

1. [コレクションを作成](#gsgcreate-collection)

1. [データをアップロードおよび検索する](#gsgindex-collection)

このチュートリアルでは、 を使用してコレクションを設定する方法について説明します AWS マネジメントコンソール。を使用した同じ手順については AWS CLI、「」を参照してください[チュートリアル: Amazon OpenSearch Serverless (CLI) でのセキュリティの開始方法](gsg-serverless-cli.md)。

## ステップ 1: アクセス許可を設定する
<a name="gsgpermissions"></a>

**注記**  
`Action":"aoss:*"` や `Action":"*"` など、より広範な ID ベースのポリシーを既に使用している場合は、この手順をスキップできます。ただし本番環境では、最小特権の原則に従い、作業を完了するのに最低限必要なアクセス許可を割り当てることをお勧めします。

このチュートリアルを完了するためには、適切な IAM のアクセス許可を持っている必要があります。ユーザーまたはロールには、以下の最低限の許可を含む [ID ベースのポリシー](security-iam-serverless.md#security-iam-serverless-id-based-policies)が、アタッチされている必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:CreateCollection",
        "aoss:CreateSecurityPolicy",
        "aoss:GetSecurityPolicy",
        "aoss:ListSecurityPolicies",
        "aoss:CreateAccessPolicy",
        "aoss:GetAccessPolicy",
        "aoss:ListAccessPolicies"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

OpenSearch Serverless のアクセス許可に関する詳細なリストについては、「[Amazon OpenSearch Serverless 向けの アイデンティティとアクセス管理](security-iam-serverless.md)」を参照してください。

## ステップ 2: 暗号化ポリシーを作成する
<a name="gsg-encryption"></a>

[暗号化ポリシー](serverless-encryption.md)は、コレクションを暗号化するために OpenSearch Serverless が使用する AWS KMS キーを指定します。コレクションは、 AWS マネージドキー または別のキーで暗号化できます。このチュートリアルでは、わかりやすくするため AWS マネージドキーでコレクションを暗号化します。

**暗号化ポリシーを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで **[Serverless]** を展開し、**[Encryption policies]** (暗号化ポリシー) を選択します。

1. **[Create encryption policy]** (暗号化ポリシーを作成) を選択します。

1. ポリシーに「**books-policy**」と名前を付けます。説明には、「**Encryption policy for books collection**」(books コレクションの暗号化ポリシー) と入力します。

1. **[Resources]** (リソース) に「**books**」と入力します。これがコレクションの名前になります。より広範囲にしたい場合は、アスタリスク (`books*`) を追加します。これにより「books」という単語で始まるすべてのコレクションにポリシーを適用できます。

1. **暗号化**では、**Use AWS owned key** を選択したままにします。

1. **[作成]** を選択します。

## ステップ 3: ネットワークポリシーを作成する
<a name="gsg-network"></a>

[ネットワークポリシー](serverless-network.md)では、コレクションにパブリックネットワークからインターネット経由でアクセス可能にするか、OpenSearch Serverless が管理する VPC エンドポイント経由でのアクセスが必要にするかを決定できます。このチュートリアルでは、パブリックアクセスを設定します。

**ネットワークポリシーを作成するには**

1. 左のナビゲーションペインで **[Network policies]** (ネットワークポリシー) を選択し、**[Create network policy]** (ネットワークポリシーの作成) を選択します。

1. ポリシーに「**books-policy**」と名前を付けます。説明には、「**Network policy for books collection**」(books コレクションのネットワークポリシー) と入力します。

1. **[ルール 1]** で、ルールに「**books コレクションのパブリックアクセス**」という名前を付けます。

1. このチュートリアルでは、わかりやすくするため *books* コレクションにパブリックアクセスを設定します。アクセスタイプには、**[Public]** (パブリック) を選択します。

1. コレクションには、OpenSearch Dashboards からアクセスします。ダッシュボードが機能するために、ダッシュボード*および* OpenSearch エンドポイントのネットワークアクセスを設定する必要があります。

   リソースタイプは、**[Access to OpenSearch endpoints]** (OpenSearch エンドポイントへのアクセス)と **[Access to OpenSearch Dashboards]** (OpenSearch Dashboardsへのアクセス) の両方を有効にします。

1. 両方の入力ボックスに、「**Collection Name = books**」(コレクション名 = books) と入力します。このように設定すると、ポリシーの範囲が狭くなり 1 つのコレクション (`books`) にのみ適用されるようになります。ルールは次のようになります。  
![\[Search interface showing two input fields for collection or prefix term selection, both set to "books".\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-tutorial-network.png)

1. **[作成]** を選択します。

## ステップ 4: データアクセスポリシーを作成する
<a name="gsg-data-access"></a>

コレクションのデータには、データアクセスを設定するまでアクセスできません。[データアクセスポリシー](serverless-data-access.md)は、ステップ 1 で設定した IAM ID ベースのポリシーとは別のものです。このポリシーでは、コレクション内の実際のデータにアクセスできます。

このチュートリアルでは、*books* コレクションへのデータのインデックス化に必要なアクセス許可を 1 人のユーザーに提供します。

**データアクセスポリシーを作成するには**

1. 左のナビゲーションペインで、**[Data access policies]** (データアクセスポリシー) を選択し、**[Create access policy]** (アクセスポリシーを作成) を選択します。

1. ポリシーに「**books-policy**」と名前を付けます。説明には、「**Data access policy for books collection**」(books コレクションのデータアクセスポリシー) と入力します。

1. ポリシーの定義方法として **[JSON]** を選択し、JSON エディターに次のポリシーを貼り付けます。

   プリンシパル ARN を、OpenSearch Dashboards へのログインやデータのインデックス化に使用するアカウントの ARN に置き換えます。

   ```
   [
      {
         "Rules":[
            {
               "ResourceType":"index",
               "Resource":[
                  "index/books/*"
               ],
               "Permission":[
                  "aoss:CreateIndex",
                  "aoss:DescribeIndex", 
                  "aoss:ReadDocument",
                  "aoss:WriteDocument",
                  "aoss:UpdateIndex",
                  "aoss:DeleteIndex"
               ]
            }
         ],
         "Principal":[
            "arn:aws:iam::123456789012:user/my-user"
         ]
      }
   ]
   ```

   このポリシーは、*books* コレクション内のインデックス作成や一部のデータのインデックス化、および検索に必要な最低限のアクセス許可を 1 人のユーザーに提供します。

1. **[作成]** を選択します。

## ステップ 5: コレクションを作成する
<a name="gsgcreate-collection"></a>

これで、暗号化ポリシーとネットワークポリシーを設定できました。一致するコレクションを作成すると、セキュリティ設定が自動的に適用されるようになります。

**OpenSearch Serverless コレクションを作成するには**

1. 左側のナビゲーションペインで **[Collections]** (コレクション) 、**[Create collection]** (コレクションを作成) を選択します。

1. コレクションに「**books**」と名前を付けます。

1. コレクションタイプでは、**[Search]** (検索) を選択します。

1. **[Encryption]** (暗号化) で、OpenSearch Serverless によりコレクション名が `books-policy` 暗号化ポリシーと一致することが通知されます。

1. **[Network access settings]** (ネットワークアクセス設定) で、OpenSearch Serverless によりコレクション名が `books-policy` ネットワークポリシーと一致することが通知されます。

1. [**次へ**] を選択します。

1. **[Data access policy options]** (データアクセスポリシーのオプション) で、OpenSearch Serverless によりコレクション名が `books-policy` データアクセスポリシーと一致することが通知されます。

1. [**次へ**] を選択します。

1. コレクションの設定を確認し、**[Submit]** (送信) を選択します。通常、コレクションの初期化には 1 分もかかりません。

## ステップ 6: データをアップロードおよび検索する
<a name="gsgindex-collection"></a>

OpenSearch Serverless コレクションへのデータのアップロードには、Postman または curl が使用できます。簡潔に言うと、これらの例では OpenSearch Dashboards** コンソール内の開発ツールを使用しています**。

**コレクション内のデータをインデックス化して検索するには**

1. 左側のナビゲーションペインで **[Collections]** (コレクション) を選択し、**books** コレクションを選択して詳細ページを開きます。

1. コレクションの OpenSearch Dashboards URL を選択します。この URL の形式は、`https://collection-id.us-east-1.aoss.amazonaws.com/_dashboards` になります。

1. データアクセスポリシーで指定したプリンシパルの [AWS アクセスキーとシークレットキー](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html)を使用して、OpenSearch Dashboards にサインインします。

1. OpenSearch Dashboards 内で左側のナビゲーションメニューを開き、**[Dev Tools]** (開発ツール) を選択します。

1. *books-index* という単一のインデックスを作成するには、次のコマンドを実行します。

   ```
   PUT books-index 
   ```  
![\[OpenSearch Dashboards console showing PUT request for books-index with JSON response.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-createindex.png)

1. 単一のドキュメントを *books-index* にインデックス化するには、次のコマンドを実行します。

   ```
   PUT books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

1. OpenSearch Dashboards 内でデータを検索するためには、少なくとも 1 つのインデックスパターンを設定する必要があります。OpenSearch は、そのパターンを使用して、分析する対象のインデックスを特定します。Dashboards のメインメニューを開き、[**スタック管理**] を選択し、[**インデックスパターン**] を選択してから、[**インデックスパターンを作成する**] を選択します。このチュートリアルでは、「*books-index*」と入力します。

1. [**次のステップ**] を選択してから、[**インデックスパターンの作成**] を選択します。パターンが作成されたら、`author` および `title` などのさまざまなドキュメントフィールドを表示できます。

1. データの検索を開始するには、メインメニューをもう一度開き **[Discover]** (検出) を選択するか、[検索 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/) を使用します。

# チュートリアル: Amazon OpenSearch Serverless (CLI) でのセキュリティの開始方法
<a name="gsg-serverless-cli"></a>

このチュートリアルでは、セキュリティに関する[コンソール入門チュートリアル](gsg-serverless.md)で説明されている手順を説明しますが、OpenSearch Service コンソール AWS CLI ではなく を使用します。

このチュートリアルでは、次の手順を実行します。

1. IAM アクセス権限ポリシーを作成する

1. IAM ポリシーを IAM ロールにアタッチする

1. 暗号化ポリシーを作成する

1. ネットワークポリシーを作成する

1. コレクションを作成

1. データアクセスポリシーを設定する

1. コレクションエンドポイントを取得する

1. 接続にデータをアップロードする

1. コレクション内のデータを検索する

このチュートリアルの目的は、簡単な暗号化、ネットワーク、データアクセス設定がある 1 つの OpenSearch Serverless コレクションを設定することです。たとえば、パブリックネットワークアクセス、暗号化 AWS マネージドキー 用の 、および単一のユーザーに最小限のアクセス許可を付与する簡略化されたデータアクセスポリシーを設定します。

本番環境では、SAML 認証、カスタム暗号化キー、VPC アクセスなどのより強固な設定を実装することを検討してください。

**OpenSearch Serverless でセキュリティポリシーの使用を開始するには**

1. 
**注記**  
`Action":"aoss:*"` や `Action":"*"` など、より広範な ID ベースのポリシーを既に使用している場合は、この手順をスキップできます。ただし本番環境では、最小特権の原則に従い、作業を完了するのに最低限必要なアクセス許可を割り当てることをお勧めします。

   開始するには、このチュートリアルのステップを実行するために必要な最小限のアクセス許可を持つ AWS Identity and Access Management ポリシーを作成します。`TutorialPolicy` ポリシーには次のような名前を付けます。

   ```
   aws iam create-policy \
     --policy-name TutorialPolicy \
     --policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Action\": [\"aoss:ListCollections\",\"aoss:BatchGetCollection\",\"aoss:CreateCollection\",\"aoss:CreateSecurityPolicy\",\"aoss:GetSecurityPolicy\",\"aoss:ListSecurityPolicies\",\"aoss:CreateAccessPolicy\",\"aoss:GetAccessPolicy\",\"aoss:ListAccessPolicies\"],\"Effect\": \"Allow\",\"Resource\": \"*\"}]}"
   ```

   **レスポンス例**

   ```
   {
       "Policy": {
           "PolicyName": "TutorialPolicy",
           "PolicyId": "ANPAW6WRAECKG6QJWUV7U",
           "Arn": "arn:aws:iam::123456789012:policy/TutorialPolicy",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "PermissionsBoundaryUsageCount": 0,
           "IsAttachable": true,
           "CreateDate": "2022-10-16T20:57:18+00:00",
           "UpdateDate": "2022-10-16T20:57:18+00:00"
       }
   }
   ```

1. コレクション内でデータをインデックス化して検索する IAM ロールに `TutorialPolicy` をアタッチします。`TutorialRole` ユーザーに次のような名前を付けます。

   ```
   aws iam attach-role-policy \
     --role-name TutorialRole \
     --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
   ```

1. コレクションを作成する前に、後の手順で作成する *books* コレクションに AWS 所有のキー を割り当てる[暗号化ポリシー](serverless-encryption.md)を作成する必要があります。

   *books* コレクション用の暗号化ポリシーを作成するには、次のリクエストを送信します。

   ```
   aws opensearchserverless create-security-policy \
     --name books-policy \
     --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AWSOwnedKey\":true}"
   ```

   **レスポンス例**

   ```
   {
       "securityPolicyDetail": {
           "type": "encryption",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDAwNTk5MF8x",
           "policy": {
               "Rules": [
                   {
                       "Resource": [
                           "collection/books"
                       ],
                       "ResourceType": "collection"
                   }
               ],
               "AWSOwnedKey": true
           },
           "createdDate": 1669240005990,
           "lastModifiedDate": 1669240005990
       }
   }
   ```

1. *books* コレクションにパブリックアクセスを提供する[ネットワークポリシー](serverless-network.md)を作成します。

   ```
   aws opensearchserverless create-security-policy --name books-policy --type network \
     --policy "[{\"Description\":\"Public access for books collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/books\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AllowFromPublic\":true}]"
   ```

   **レスポンス例**

   ```
   {
       "securityPolicyDetail": {
           "type": "network",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDI1Njk1NV8x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "dashboard"
                       },
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "AllowFromPublic": true,
                   "Description": "Public access for books collection"
               }
           ],
           "createdDate": 1669240256955,
           "lastModifiedDate": 1669240256955
       }
   }
   ```

1. *books* コレクションを作成します。

   ```
   aws opensearchserverless create-collection --name books --type SEARCH
   ```

   **レスポンス例**

   ```
   {
       "createCollectionDetail": {
           "id": "8kw362bpwg4gx9b2f6e0",
           "name": "books",
           "status": "CREATING",
           "type": "SEARCH",
           "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
           "kmsKeyArn": "auto",
           "createdDate": 1669240325037,
           "lastModifiedDate": 1669240325037
       }
   }
   ```

1. *books* コレクション内のデータをインデックス化して検索するための最小限のアクセス許可を付与する[データアクセスポリシー](serverless-data-access.md)を作成します。プリンシパル ARN をステップ 1 の `TutorialRole` の ARN に置き換えます。

   ```
   aws opensearchserverless create-access-policy \
     --name books-policy \
     --type data \
     --policy "[{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index\/books\/books-index\"],\"Permission\":[\"aoss:CreateIndex\",\"aoss:DescribeIndex\",\"aoss:ReadDocument\",\"aoss:WriteDocument\",\"aoss:UpdateIndex\",\"aoss:DeleteIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:role\/TutorialRole\"]}]"
   ```

   **レスポンス例**

   ```
   {
       "accessPolicyDetail": {
           "type": "data",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDM5NDY1M18x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "index/books/books-index"
                           ],
                           "Permission": [
                               "aoss:CreateIndex",
                               "aoss:DescribeIndex",
                               "aoss:ReadDocument",
                               "aoss:WriteDocument",
                               "aoss:UpdateDocument",
                               "aoss:DeleteDocument"
                           ],
                           "ResourceType": "index"
                       }
                   ],
                   "Principal": [
                       "arn:aws:iam::123456789012:role/TutorialRole"
                   ]
               }
           ],
           "createdDate": 1669240394653,
           "lastModifiedDate": 1669240394653
       }
   }
   ```

   これで、`TutorialRole` は *books* コレクション内のドキュメントをインデックス化して検索できるはずです。

1. OpenSearch API への呼び出しを行うには、コレクションエンドポイントが必要です。次のリクエストを送信して、`collectionEndpoint` パラメータを取得します。

   ```
   aws opensearchserverless batch-get-collection --names books  
   ```

   **レスポンス例**

   ```
   {
       "collectionDetails": [
           {
               "id": "8kw362bpwg4gx9b2f6e0",
               "name": "books",
               "status": "ACTIVE",
               "type": "SEARCH",
               "description": "",
               "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
               "createdDate": 1665765327107,
               "collectionEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com",
               "dashboardEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/_dashboards"
           }
       ],
       "collectionErrorDetails": []
   }
   ```
**注記**  
コレクションのステータスが `ACTIVE` に変わるまで、コレクションエンドポイントを表示することはできません。コレクションが正常に作成されるまで、呼び出しを複数回行いステータスを確認する必要があることがあります。

1. [Postman](https://www.getpostman.com/) や curl などの HTTP ツールを使用して、データを *books* コレクションにインデックス化します。*books-index* というインデックスを作成し、単一のドキュメントを追加します。

   `TutorialRole` の認証情報を使用して、次のリクエストを前の手順で取得したコレクションエンドポイントに送信します。

   ```
   PUT https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

   **レスポンス例**

   ```
   {
     "_index" : "books-index",
     "_id" : "1",
     "_version" : 1,
     "result" : "created",
     "_shards" : {
       "total" : 0,
       "successful" : 0,
       "failed" : 0
     },
     "_seq_no" : 0,
     "_primary_term" : 0
   }
   ```

1. コレクション内でデータの検索を開始するには、[検索 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/) を使用します。次のクエリは、基本的な検索を実行します。

   ```
   GET https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_search
   ```

   **レスポンス例**

   ```
   {
       "took": 405,
       "timed_out": false,
       "_shards": {
           "total": 6,
           "successful": 6,
           "skipped": 0,
           "failed": 0
       },
       "hits": {
           "total": {
               "value": 2,
               "relation": "eq"
           },
           "max_score": 1.0,
           "hits": [
               {
                   "_index": "books-index:0::3xJq14MBUaOS0wL26UU9:0",
                   "_id": "F_bt4oMBLle5pYmm5q4T",
                   "_score": 1.0,
                   "_source": {
                       "title": "The Shining",
                       "author": "Stephen King",
                       "year": 1977
                   }
               }
           ]
       }
   }
   ```

# Amazon OpenSearch Serverless 向けの アイデンティティとアクセス管理
<a name="security-iam-serverless"></a>

AWS Identity and Access Management (IAM) は、管理者が AWS リソースへのアクセスを安全に制御 AWS のサービス するのに役立つ です。IAM 管理者は、どのユーザーを*認証* (サインイン受け入れ) し、また OpenSearch Serverless リソースの使用を*認可*する (アクセス許可を付与する) かを制御します。IAM は、追加料金なしで使用できる AWS のサービス です。

**Topics**
+ [OpenSearch Serverless でのアイデンティティベースのポリシー](#security-iam-serverless-id-based-policies)
+ [OpenSearch Serverless でのポリシーアクション](#security-iam-serverless-id-based-policies-actions)
+ [OpenSearch Serverless のポリシーリソース](#security-iam-serverless-id-based-policies-resources)
+ [Amazon OpenSearch Serverless のポリシー条件キー](#security_iam_serverless-conditionkeys)
+ [ABAC と OpenSearch Serverless](#security_iam_serverless-with-iam-tags)
+ [OpenSearch Serverless での一時的な認証情報の使用](#security_iam_serverless-tempcreds)
+ [Amazon OpenSearch Serverless でのサービスにリンクされたロール](#security_iam_serverless-slr)
+ [その他のポリシータイプ](#security_iam_access-manage-other-policies)
+ [OpenSearch Serverless での ID ベースのポリシー例](#security_iam_serverless_id-based-policy-examples)
+ [IAM Identity Center による Amazon OpenSearch Serverless のサポート](serverless-iam-identity-center.md)

## OpenSearch Serverless でのアイデンティティベースのポリシー
<a name="security-iam-serverless-id-based-policies"></a>

**アイデンティティベースのポリシーのサポート:** あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースポリシーの作成方法については、「*IAM ユーザーガイド*」の「[カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。JSON ポリシーで使用できるすべての要素について学ぶには、「*IAM ユーザーガイド*」の「[IAM JSON ポリシーの要素のリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)」を参照してください。

### OpenSearch Serverless での ID ベースのポリシー例
<a name="security_iam_id-based-policy-examples"></a>

OpenSearch Serverless での ID ベースのポリシー例については、「[OpenSearch Serverless での ID ベースのポリシー例](#security_iam_serverless_id-based-policy-examples)」を参照してください。

## OpenSearch Serverless でのポリシーアクション
<a name="security-iam-serverless-id-based-policies-actions"></a>

**ポリシーアクションのサポート:** あり

JSON ポリシーの `Action` 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連付けられた AWS API オペレーションと同じです。一致する API オペレーションのない*許可のみのアクション*など、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは*依存アクション*と呼ばれます。

このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

OpenSearch Serverless のポリシーアクションでは、アクションの前に次のプレフィックスを使用します。

```
aoss
```

単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。

```
"Action": [
      "aoss:action1",
      "aoss:action2"
         ]
```

ワイルドカード文字 (\$1) を使用すると、複数のアクションを指定することができます。例えば、`Describe` という単語で始まるすべてのアクションを指定するには次のアクションを含めます。

```
"Action": "aoss:List*"
```

OpenSearch Serverless での ID ベースのポリシー例については、「[OpenSearch Serverless での ID ベースのポリシー例](#security_iam_id-based-policy-examples)」を参照してください。

## OpenSearch Serverless のポリシーリソース
<a name="security-iam-serverless-id-based-policies-resources"></a>

**ポリシーリソースのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

```
"Resource": "*"
```

## Amazon OpenSearch Serverless のポリシー条件キー
<a name="security_iam_serverless-conditionkeys"></a>

**サービス固有のポリシー条件キーのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

`Condition` 要素は、定義された基準に基づいてステートメントが実行される時期を指定します。イコールや未満などの[条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、*「IAM ユーザーガイド*」の[AWS 「グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。

OpenSearch Serverless では、属性ベースのアクセス制御 (ABAC) に加えて、以下の条件キーをサポートしています。
+ `aoss:collection`
+ `aoss:CollectionId`
+ `aoss:index`

これらの条件キーは、アクセスポリシーおよびセキュリティポリシーに許可を与える場合でも使用できます。例えば、次のようになります。

```
[
   {
      "Effect":"Allow",
      "Action":[
         "aoss:CreateAccessPolicy",
         "aoss:CreateSecurityPolicy"
      ],
      "Resource":"*",
      "Condition":{
         "StringLike":{
            "aoss:collection":"log"
         }
      }
   }
]
```

この例の条件は、コレクション名またはパターンに一致する*ルール*を含むポリシーに適用されます。コンディションは、以下の動作を行います。
+ `StringEquals` – リソース文字列「log」が*完全一致*で含まれたルールを使用するポリシーに適用されます (例: `collection/log`)。
+ `StringLike` –リソース文字列に文字列「log」が*含まれた*ルールを使用するポリシーに適用されます (例: `collection/log` だけでなく `collection/logs-application` や `collection/applogs123` も含む)。

**注記**  
*コレクション*条件キーは、インデックスレベルでは適用されません。例として上記のポリシーでは、リソース文字列 `index/logs-application/*` を含むアクセスポリシーまたはセキュリティポリシーに対して、この条件は適用されません。

OpenSearch Serverless の条件キーのリストは、「*サービス認証リファレンス*」の「[Condition keys for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-policy-keys)」を参照してください。条件キーの使用が可能なアクションおよびリソースついては、「[Actions defined by Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-actions-as-permissions)」(Amazon OpenSearch Serverless で定義されるアクション) を参照してください。

## ABAC と OpenSearch Serverless
<a name="security_iam_serverless-with-iam-tags"></a>

**ABAC (ポリシー内のタグ) のサポート:** あり

属性ベースのアクセス制御 (ABAC) は、タグと呼ばれる属性に基づいてアクセス許可を定義する認可戦略です。IAM エンティティと AWS リソースにタグをアタッチし、プリンシパルのタグがリソースのタグと一致するときにオペレーションを許可するように ABAC ポリシーを設計できます。

タグに基づいてアクセスを管理するには、`aws:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

ABAC の詳細については、「*IAM ユーザーガイド*」の「[ABAC 認可でアクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。ABAC をセットアップする手順を説明するチュートリアルについては、「*IAM ユーザーガイド*」の「[属性ベースのアクセスコントロール (ABAC) を使用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)」を参照してください。

OpenSearch Serverless リソースでのタグ付けの詳細については、「[Amazon OpenSearch Serverless コレクション](tag-collection.md)」を参照してください。

## OpenSearch Serverless での一時的な認証情報の使用
<a name="security_iam_serverless-tempcreds"></a>

**一時的な認証情報のサポート:** あり

一時的な認証情報は、 AWS リソースへの短期的なアクセスを提供し、フェデレーションまたはスイッチロールの使用時に自動的に作成されます。長期的なアクセスキーを使用する代わりに、一時的な認証情報を動的に生成 AWS することをお勧めします。詳細については、「*IAM ユーザーガイド*」の「[IAM の一時的な認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」および「[AWS のサービス と IAM との連携](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Amazon OpenSearch Serverless でのサービスにリンクされたロール
<a name="security_iam_serverless-slr"></a>

**サービスリンクロールのサポート:** あり

 サービスにリンクされたロールは、 にリンクされたサービスロールの一種です AWS のサービス。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは に表示され AWS アカウント 、サービスによって所有されます。IAM 管理者は、サービスリンクロールのアクセス許可を表示できますが、編集することはできません。

OpenSearch Serverless でのサービスにリンクされたロールの作成または管理の詳細については、「[サービスにリンクされたロールを使用して OpenSearch Serverless コレクションを作成する](serverless-service-linked-roles.md)」を参照してください。

## その他のポリシータイプ
<a name="security_iam_access-manage-other-policies"></a>

AWS は、一般的でない追加のポリシータイプをサポートしています。これらのポリシータイプでは、より一般的なポリシータイプで付与された最大の権限を設定できます。
+ **サービスコントロールポリシー (SCPs)** – SCPsは、 の組織または組織単位 (OU) の最大アクセス許可を指定する JSON ポリシーです AWS Organizations。 AWS Organizations は、ビジネスが所有する複数の AWS アカウントをグループ化して一元管理するためのサービスです。組織内のすべての機能を有効にすると、サービスコントロールポリシー (SCP) を一部またはすべてのアカウントに適用できます。SCP は、各アカウントのルートユーザーを含む、メンバー AWS アカウントのエンティティのアクセス許可を制限します。Organizations と SCP の詳細については、「*AWS Organizations ユーザーガイド*」の「[サービスコントロールポリシー (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。
+ **リソースコントロールポリシー (RCP)** – RCP は、所有する各リソースにアタッチされた IAM ポリシーを更新することなく、アカウント内のリソースに利用可能な最大数のアクセス許可を設定するために使用できる JSON ポリシーです。RCP は、メンバーアカウントのリソースの許可を制限し、組織に属するかどうかにかかわらず、 AWS アカウントルートユーザーを含む ID のための有効な許可に影響を及ぼす可能性があります。RCP をサポートするサービスのリストを含む Organizations と RCP の詳細については、*AWS Organizations *RCPs[「リソースコントロールポリシー (RCPs](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)」を参照してください。 AWS 

## OpenSearch Serverless での ID ベースのポリシー例
<a name="security_iam_serverless_id-based-policy-examples"></a>

デフォルトでは、OpenSearch Serverless リソースを作成または変更する許可は、ユーザーおよびロールに付与されていません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。

これらのサンプルの JSON ポリシードキュメントを使用して IAM アイデンティティベースのポリシーを作成する方法については、「*IAM ユーザーガイド*」の「[IAM ポリシーを作成する (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)」を参照してください。

Amazon OpenSearch Serverless が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式など) の詳細については、「*サービス認証リファレンス*」の「[Actions, resources, and condition keys for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html)」を参照してください。

**Topics**
+ [ポリシーに関するベストプラクティス](#security_iam_serverless-policy-best-practices)
+ [コンソールでの OpenSearch Serverless の使用](#security_iam_serverless_id-based-policy-examples-console)
+ [OpenSearch Serverless コレクションの管理](#security_iam_id-based-policy-examples-collection-admin)
+ [OpenSearch Serverless コレクションの表示](#security_iam_id-based-policy-examples-view-collections)
+ [OpenSearch API オペレーションの使用](#security_iam_id-based-policy-examples-data-plane)
+ [OpenSearch API オペレーションの ABAC](#security_iam_id-based-policy-examples-data-plane-abac)

### ポリシーに関するベストプラクティス
<a name="security_iam_serverless-policy-best-practices"></a>

アイデンティティベースポリシーは非常に強力です。このポリシーは、アカウント内の OpenSearch Serverless リソースを作成、アクセス、または削除することが可能なユーザーを決定します。これらのアクションでは、 AWS アカウントに費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:

アイデンティティベースのポリシーは、アカウント内で誰かが OpenSearch Serverless リソースの作成、アクセス、または削除を実行できるどうかを決定します。これらのアクションでは、 AWS アカウントに費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
+ ** AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する** – ユーザーとワークロードにアクセス許可の付与を開始するには、多くの一般的なユースケースにアクセス許可を付与する*AWS 管理ポリシー*を使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義することで、アクセス許可をさらに減らすことをお勧めします。詳細については、*IAM ユーザーガイド* の [AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) または [ジョブ機能のAWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) を参照してください。
+ **最小特権を適用する** – IAM ポリシーでアクセス許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、*IAM ユーザーガイド* の [IAM でのポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) を参照してください。
+ **IAM ポリシーで条件を使用してアクセスをさらに制限する** - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。たとえば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、サービスアクションが などの特定の を通じて使用されている場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます CloudFormation。詳細については、*IAM ユーザーガイド* の [IAM JSON ポリシー要素:条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) を参照してください。
+ **IAM アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する** - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、*IAM ユーザーガイド* の [IAM Access Analyzer でポリシーを検証する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) を参照してください。
+ **多要素認証 (MFA) を要求する** – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、MFA をオンにしてセキュリティを強化します。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、*IAM ユーザーガイド* の [MFA を使用した安全な API アクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) を参照してください。

IAM でのベストプラクティスの詳細については、*IAM ユーザーガイド* の [IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) を参照してください。

### コンソールでの OpenSearch Serverless の使用
<a name="security_iam_serverless_id-based-policy-examples-console"></a>

OpenSearch Service コンソールで OpenSearch Serverless にアクセスするには、最小限の許可セットが必要です。これらのアクセス許可により、 AWS アカウントの OpenSearch Serverless リソースの詳細を一覧表示および表示できます。必要最低限の許可よりも制限が厳しいアイデンティティベースポリシーを作成すると、そのポリシーを持つエンティティ (IAM ロールなど) に対してコンソールが意図したとおりに機能しなくなります。

 AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

以下のポリシーでは、ユーザーが OpenSearch Service コンソール内で OpenSearch Serverless にアクセスすることを許可しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Allow",
            "Action": [
                "aoss:ListCollections",
                "aoss:BatchGetCollection",
                "aoss:ListAccessPolicies",
                "aoss:ListSecurityConfigs",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:ListVpcEndpoints",
                "aoss:GetAccessPolicy",
                "aoss:GetAccountSettings",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy"
            ]
        }
    ]
}
```

------

### OpenSearch Serverless コレクションの管理
<a name="security_iam_id-based-policy-examples-collection-admin"></a>

このポリシーは、ユーザーに対し Amazon OpenSearch Serverless コレクションの処理および管理を許可する、「コレクション管理者」ポリシーの一例です。これによりユーザーは、コレクションを作成、表示、削除できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/*",
            "Action": [
                "aoss:CreateCollection",
                "aoss:DeleteCollection",
                "aoss:UpdateCollection"
            ],
            "Effect": "Allow"
        },
        {
            "Resource": "*",
            "Action": [
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "aoss:CreateAccessPolicy",
                "aoss:CreateSecurityPolicy"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### OpenSearch Serverless コレクションの表示
<a name="security_iam_id-based-policy-examples-view-collections"></a>

このポリシー例では、ユーザーに対し、自身のアカウント内のすべての Amazon OpenSearch Serverless コレクションについて、その詳細を表示することを許可します。このユーザーには、コレクション自体や関連するセキュリティポリシーの変更は許可されません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:ListCollections",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:BatchGetCollection"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### OpenSearch API オペレーションの使用
<a name="security_iam_id-based-policy-examples-data-plane"></a>

データプレーン API オペレーションは、OpenSearch Serverless でサービスからリアルタイムの値を引き出すために使用する関数で構成されています。コントロールプレーン API オペレーションは、環境のセットアップに使用する関数で構成されています。

Amazon OpenSearch Serverless データプレーン API と OpenSearch Dashboards にブラウザからアクセスするときは、コレクションリソース用に 2 つの IAM アクセス権限を追加する必要があります。これらのアクセス権限は、`aoss:APIAccessAll` と `aoss:DashboardsAccessAll` です。

**注記**  
2023 年 5 月 10 日以降、OpenSearch Serverless では、コレクションリソースにこれら 2 つの新しい IAM 許可が必要になります。`aoss:APIAccessAll` のアクセス許可はデータプレーンアクセスを許可し、`aoss:DashboardsAccessAll` アクセス許可はブラウザから OpenSearch Dashboards を許可します。2 つの新しい IAM アクセス権限を追加しなかった場合、403 エラーが表示されます。

こちらのポリシー例では、アカウント内の指定されたコレクションの、データプレーン API へのアクセスと、アカウント内のすべてのコレクションの、OpenSearch Dashboards へのアクセスをユーザーに許可しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
         {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        },
        {
            "Effect": "Allow",
            "Action": "aoss:DashboardsAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:dashboards/default"
        }
    ]
}
```

------

`aoss:APIAccessAll` と `aoss:DashboardsAccessAll` はどちらも、コレクションリソースに完全な IAM アクセス権限を付与します。Dashboards アクセス権限は、OpenSearch Dashboards アクセスも提供します。各アクセス権限は独立して機能するので、`aoss:APIAccessAll` での明示的な拒否によって開発ツールなどのリソースへの `aoss:DashboardsAccessAll` アクセスがブロックされることはありません。`aoss:DashboardsAccessAll` での拒否についても同じことが言えます。OpenSearch Serverless は、以下のグローバル条件キーをサポートしています。
+ `aws:CalledVia`
+ `aws:CalledViaAWSService`
+ `aws:CalledViaFirst`
+ `aws:CalledViaLast`
+ `aws:CurrentTime`
+ `aws:EpochTime`
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipallsAWSService`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:PrincipalType`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:ResourceAccount`
+ `aws:ResourceOrgID`
+ `aws:ResourceOrgPaths`
+ `aws:RequestedRegion`
+ `aws:ResourceTag`
+ `aws:SourceIp`
+ `aws:SourceVpce`
+ `aws:SourceVpc`
+ `aws:userid`
+ `aws:username`
+ `aws:VpcSourceIp`

以下は、データプレーン呼び出しのプリンシパルの IAM ポリシーの条件ブロックで `aws:SourceIp` を使用する例です。

```
"Condition": {
    "IpAddress": {
         "aws:SourceIp": "203.0.113.0"
    }
}
```

以下は、データプレーン呼び出しのプリンシパルの IAM ポリシーの条件ブロックで `aws:SourceVpc` を使用する例です。

```
"Condition": {
    "StringEquals": {
        "aws:SourceVpc": "vpc-0fdd2445d8EXAMPLE"
    }
}
```

さらに、以下の OpenSearch Serverless 固有のキーがサポートされています。
+ `aoss:CollectionId`
+ `aoss:collection`

以下は、データプレーン呼び出しのプリンシパルの IAM ポリシーの条件ブロックで `aoss:collection` を使用する例です。

```
"Condition": {
    "StringLike": {
         "aoss:collection": "log-*"
    }
}
```

### OpenSearch API オペレーションの ABAC
<a name="security_iam_id-based-policy-examples-data-plane-abac"></a>

アイデンティティベースのポリシーでは、Amazon OpenSearch Serverless データプレーン API へのアクセスの制御にタグを使用できます。以下のポリシーは、コレクションに `team:devops` タグがある場合に、アタッチされたプリンシパルがデータプレーン API にアクセスすることを許可する例です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/team": "devops"
                }
            }
        }
    ]
}
```

------

以下のポリシーは、コレクションに `environment:production` タグがある場合に、アタッチされたプリンシパルがデータプレーン API およびダッシュボードにアクセスすることを拒否する例です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:APIAccessAll",
                "aoss:DashboardsAccessAll"
            ],
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        }
    ]
}
```

------

Amazon OpenSearch Serverless は、データプレーン API に対して `RequestTag` および `TagKeys` グローバル条件キーをサポートしていません。

# IAM Identity Center による Amazon OpenSearch Serverless のサポート
<a name="serverless-iam-identity-center"></a>

## IAM Identity Center による Amazon OpenSearch Serverless のサポート
<a name="serverless-iam-identity-support"></a>

IAM Identity Center のプリンシパル (ユーザーとグループ) を使用して、Amazon OpenSearch アプリケーションから Amazon OpenSearch Serverless データにアクセスできます。Amazon OpenSearch Serverless の IAM Identity Center に対するサポートを有効にするには、IAM Identity Center の使用を有効にする必要があります。これを行う方法の詳細については、「[What is IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)」を参照してください。

**注記**  
IAM Identity Center ユーザーまたはグループを使用して Amazon OpenSearch Serverless コレクションにアクセスするには、OpenSearch UI (アプリケーション) 機能を使用する必要があります。IAM Identity Center 認証情報を使用した OpenSearch Serverless Dashboards への直接アクセスはサポートされていません。詳細については、[OpenSearch ユーザーインターフェイスの開始方法](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/application.html)」を参照してください。

IAM Identity Center のインスタンスが作成されたら、カスタマーアカウント管理者は Amazon OpenSearch Serverless サービス用の IAM Identity Center アプリケーションを作成する必要があります。これは [CreateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html) を呼び出すことで実行できます。カスタマーアカウント管理者は、リクエストの認可に使用する属性を指定できます。デフォルトで使用される属性は `UserId` と `GroupId.` です。

Amazon OpenSearch Serverless の IAM Identity Center 統合では、次の AWS IAM Identity Center (IAM) アクセス許可を使用します。
+ `aoss:CreateSecurityConfig` – IAM Identity Center プロバイダーを作成します
+ `aoss:ListSecurityConfig` – 現在のアカウントにおけるすべての IAM Identity Center プロバイダーを一覧表示します。
+ `aoss:GetSecurityConfig` – IAM Identity Center のプロバイダー情報を表示します。
+ `aoss:UpdateSecurityConfig` – 特定の IAM Identity Center の設定を変更します。
+ `aoss:DeleteSecurityConfig` – IAM Identity Center プロバイダーを削除します。

次のアイデンティティベースのアクセスポリシーを使用して、すべての IAM Identity Center 設定を管理できます。

------
#### [ JSON ]

****  

```
{
"Version": "2012-10-17",
    "Statement": [
        {
"Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

**注記**  
`Resource` 要素はワイルドカードにする必要があります。

## IAM Identity Center プロバイダーの作成 (コンソール)
<a name="serverless-iam-console"></a>

IAM Identity Center プロバイダーを作成して、OpenSearch Application による認証を有効にできます。OpenSearch Dashboards の IAM アイデンティティセンター認証を有効にするには、以下の手順を実行します。

1. [[Amazon OpenSearch Service](https://console.aws.amazon.com/aos/home.)] コンソールにサインインします。

1. 左側のナビゲーションパネルで **[サーバーレス]** を展開し、**[認証]** を選択します。

1. **[IAM アイデンティティセンター認証]** を選択します。

1. **[編集]** を選択します。

1. [IAM アイデンティティセンターによる認証] の横にあるチェックボックスをオンにします。

1. ドロップダウンメニューから **[ユーザーとグループ]** 属性キーを選択します。ユーザー属性は、`UserName`、`UserId`、`Email` に基づいてユーザーを認可するために使用されます。グループ属性は、`GroupName` と `GroupId` に基づいてユーザーを認証するために使用されます。

1. **[IAM アイデンティティセンター]** インスタンスを選択します。

1. **[保存]** を選択します。

## IAM アイデンティティセンターのプロバイダーの作成 (AWS CLI)
<a name="serverless-iam-identity-center-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用して IAM Identity Center プロバイダーを作成するには、次のコマンドを使用します。

```
aws opensearchserverless create-security-config \
--region us-east-2 \
--name "iamidentitycenter-config" \
--description "description" \
--type "iamidentitycenter" \
--iam-identity-center-options '{
    "instanceArn": "arn:aws:sso:::instance/ssoins-99199c99e99ee999",
    "userAttribute": "UserName",                  
    "groupAttribute": "GroupId"
}'
```

IAM アイデンティティセンターが有効化された後、お客様は**ユーザーとグループ**の属性のみ変更できます。

```
aws opensearchserverless update-security-config \
--region us-east-1 \
--id <id_from_list_security_configs> \
--config-version <config_version_from_get_security_config> \
--iam-identity-center-options-updates '{
    "userAttribute": "UserId",
    "groupAttribute": "GroupId"
}'
```

を使用して IAM Identity Center プロバイダーを表示するには AWS Command Line Interface、次のコマンドを使用します。

```
aws opensearchserverless list-security-configs --type iamidentitycenter
```

## IAM アイデンティティセンターのプロバイダーの削除
<a name="serverless-iam-identity-center-deleting"></a>

 IAM アイデンティティセンターには、プロバイダーのインスタンスが 2 つ用意されています。1 つは組織アカウント用、もう 1 つはメンバーアカウント用です。IAM アイデンティティセンターのインスタンスを変更する必要がある場合は、`DeleteSecurityConfig` API を使用してセキュリティ設定を削除し、新しい IAM アイデンティティセンターのインスタンスを使用して新しいセキュリティ設定を作成する必要があります。以下のコマンドを使用して、IAM アイデンティティセンターのプロバイダーを削除できます。

```
aws opensearchserverless delete-security-config \
--region us-east-1 \
--id <id_from_list_security_configs>
```

## IAM アイデンティティセンターに対するコレクションデータへのアクセス権の付与
<a name="serverless-iam-identity-center-collection-data"></a>

IAM アイデンティティセンターのプロバイダーが有効になった後は、コレクションのデータアクセスポリシーを更新して IAM アイデンティティセンターのプリンシパルを含めることができます。IAM アイデンティティセンターのプリンシパルは、以下の形式で更新する必要があります。

```
[
   {
"Rules":[
       ...  
      ],
      "Principal":[
         "iamidentitycenter/<iamidentitycenter-instance-id>/user/<UserName>",
         "iamidentitycenter/<iamidentitycenter-instance-id>/group/<GroupId>"
      ]
   }
]
```

**注記**  
Amazon OpenSearch Serverless は、すべてのお客様のコレクションに対して IAM アイデンティティセンターの 1 つのインスタンスのみをサポートし、1 人のユーザーに対して最大 100 個のグループをサポートできます。許可されたインスタンスの数を超えて使用しようとすると、データアクセスポリシーの認可処理に不整合が発生し、`403` エラーメッセージが表示されます。

アクセス権は、コレクション、インデックス、またはその両方に付与できます。ユーザーごとに異なる権限を持たせたい場合は、複数のルールを作成する必要があります。使用可能なアクセス許可のリストについては、「[Amazon OpenSearch Service での Identity and Access Management](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html)」を参照してください。アクセスポリシーをフォーマットする方法については、「[SAML ID に対するコレクションデータへのアクセス権の付与](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html#serverless-saml-policies)」を参照してください。

# Amazon OpenSearch Serverless の暗号化
<a name="serverless-encryption"></a>

## 保管中の暗号化
<a name="serverless-encryption-at-rest"></a>

ユーザーが作成した各 Amazon OpenSearch Serverless コレクションでは、データへの不正アクセスを防止するための、暗号化を使用したセキュリティ機能により、保管中のデータが保護されます。保管時の暗号化では AWS Key Management Service 、 (AWS KMS) を使用して暗号化キーを保存および管理します。この暗号化は、256 ビットキーを使用した Advanced Encryption Standard アルゴリズム (AES-256) を使用して実行されます。

**Topics**
+ [暗号化ポリシー](#serverless-encryption-policies)
+ [考慮事項](#serverless-encryption-considerations)
+ [必要なアクセス許可](#serverless-encryption-permissions)
+ [カスタマーマネージドキーのキーポリシー](#serverless-customer-cmk-policy)
+ [OpenSearch Serverless が で許可を使用する方法 AWS KMS](#serverless-encryption-grants)
+ [暗号化ポリシーの作成 (コンソール)](#serverless-encryption-console)
+ [暗号化ポリシーの作成 (AWS CLI)](#serverless-encryption-cli)
+ [暗号化ポリシーの表示](#serverless-encryption-list)
+ [暗号化ポリシーの更新](#serverless-encryption-update)
+ [暗号化ポリシーの削除](#serverless-encryption-delete)

### 暗号化ポリシー
<a name="serverless-encryption-policies"></a>

暗号化ポリシーを使用すると、新しく作成され特定の名前またはパターンに一致するコレクションに対し、暗号化キーを自動的に割り当てることができ、多くのコレクションを大規模に管理できます。

暗号化ポリシーを作成する際には、*プレフィックス*でワイルドカードベースのマッチングルール (`MyCollection*` など) を指定するか、コレクション名を 1 つ入力します。次に、その名前またはプレフィックスパターンに一致するコレクションを作成すると、ポリシーとそれに対応する KMS キーが、そのコレクションに対し自動的に割り当てられます。

コレクションを作成するときは、セキュリティポリシーを使用するか、`CreateCollection`リクエスト内で直接行うかの 2 つの方法で AWS KMS キーを指定できます。`CreateCollection` リクエストの一部として AWS KMS キーを指定すると、一致するセキュリティポリシーよりも優先されます。このアプローチにより、必要に応じて特定のコレクションのポリシーベースの暗号化設定を柔軟に上書きできます。

![\[Encryption policy creation process with rules and collection matching to KMS key.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-encryption.png)


暗号化ポリシーには次の要素が含まれます。
+ `Rules` – 1 つ以上のコレクションマッチングルール。それぞれに次のサブ要素が含まれます。
  + `ResourceType` – 現在、選択できるオプションは「collection」のみです。暗号化ポリシーは、コレクションリソースにのみ適用されます。
  + `Resource` – ポリシーが適用される 1 つ以上のコレクション名またはパターンで、形式は `collection/<collection name|pattern>` です。
+ `AWSOwnedKey` – AWS 所有のキーを使用するかどうか。
+ `KmsARN` – `AWSOwnedKey` に「false」を設定する場合は、KMS キーの Amazon リソースネーム (ARN) を指定して、関連するコレクションを暗号化します。このパラメータを含めると、OpenSearch Serverless は `AWSOwnedKey` パラメータを無視します。

次のポリシー例では、`autopartsinventory` という名前で詳細作成されるすべてのコレクションと、「sales」という用語で始まるコレクションに対し、カスタマー管理キーを割り当てます。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

ポリシーがコレクション名と一致していても、リソースパターンにワイルドカード (\$1) が含まれている場合には、コレクションの作成時にこの自動割り当てを上書きすることが可能です。キーの自動割り当てを上書きすることを選択した場合、OpenSearch Serverless はユーザーに代わり、**auto-<*collection-name*>** という名前の暗号化ポリシーを作成し、これを対象のコレクションにアタッチします。このポリシーは、初期状態では 1 つのコレクションにのみ適用されますが、他のコレクションを含めるように変更できます。

コレクションと一致しないようにポリシールールを変更しても、関連する KMS キーのコレクションに対する割り当ては、(自動的に) 解除されません。コレクションの暗号化には、常に初期の暗号化キーが使用されます。コレクションに対し異なる暗号化キーを使用した場合には、コレクションを再作成します。

1 つのコレクションに対し複数のポリシーのルールが一致する場合は、より詳細なルールが使用されます。例えば、あるポリシーに `collection/log*` のルールが含まれており、もう 1 つのポリシーには `collection/logSpecial` のルールが含まれている場合には、より詳細である 2 つ目のポリシーの暗号化キーが使用されます。

名前やプレフィックスが既に他のポリシーに含まれている場合、そのポリシーを使用することはできません。異なる暗号化ポリシーで同じリソースパターンを設定しようとすると、OpenSearch Serverless はエラーを表示します。

### 考慮事項
<a name="serverless-encryption-considerations"></a>

コレクションの暗号化を設定する際には、次の点を考慮してください。
+ すべての Serverless コレクションには、保存時の暗号化が*必須*です。
+ 使用するキーには、カスタマー管理キーと AWS 所有のキーのオプションがあります。カスタマー管理キーを使用する場合は、[自動キーローテーション](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)を有効にすることをお勧めします。
+ コレクションを作成後、そのコレクションの暗号化キーを変更することはできません。コレクションを初めてセットアップするときに AWS KMS 使用するものを慎重に選択します。
+ コレクションに適合できるのは、単一の暗号化ポリシーのみです。
+ 固有の KMS キーを持つコレクションは、他のコレクションとの間で、OpenSearch Compute Unit (OCU) を共有することはできません。ユニークなキーを持つ各コレクションには、それぞれ独自に 4 OCU が必要です。
+ 暗号化ポリシーの KMS キーを更新しても、その変更は KMS キーが既に割り当てられている、既存の一致するコレクションには影響しません。
+ OpenSearch Serverless は、顧客管理キーにおける許可について明示的なチェックは行いません。データアクセスポリシーを通じてコレクションにアクセスする許可が付与されたユーザーは、関連付けられたキーで暗号化されたデータを、取り込んだりクエリできます。

### 必要なアクセス許可
<a name="serverless-encryption-permissions"></a>

OpenSearch Serverless の保管時の暗号化では、次の AWS Identity and Access Management (IAM) アクセス許可を使用します。IAM 条件を指定して、ユーザーを特定のコレクションに制限できます。
+ `aoss:CreateSecurityPolicy` – 暗号化ポリシーを作成します。
+ `aoss:ListSecurityPolicies` – アタッチされているすべての暗号化ポリシーとコレクションを一覧表示します。
+ `aoss:GetSecurityPolicy` – 特定の暗号化ポリシーの詳細を表示します。
+ `aoss:UpdateSecurityPolicy` – 暗号化ポリシーを変更します。
+ `aoss:DeleteSecurityPolicy` – 暗号化ポリシーを削除します。

以下のアイデンティティベースのアクセスポリシー例では、ユーザーがリソースパターン `collection/application-logs` の暗号化ポリシーを管理する際に必要となる、最小限の許可を付与しています。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "aoss:CreateSecurityPolicy",
            "aoss:UpdateSecurityPolicy",
            "aoss:DeleteSecurityPolicy",
            "aoss:GetSecurityPolicy"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aoss:collection":"application-logs"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "aoss:ListSecurityPolicies"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### カスタマーマネージドキーのキーポリシー
<a name="serverless-customer-cmk-policy"></a>

[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を選択してコレクションを保護する際、OpenSearch Serverless は、選択を行うプリンシパルに代わって KMS キーを使用するための、アクセス許可を取得します。そのプリンシパル、ユーザー、またはロールには、OpenSearch Serverless に必要な KMS キーに対するアクセス許可が付与されている必要があります。れらのアクセス許可は、[キーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)または [IAM ポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)により付与できます。

OpenSearch Serverless は、自動スケーリング`GenerateDataKey`やソフトウェア更新などのメンテナンスオペレーション中に および `Decrypt` KMS API コールを行います。これらの呼び出しは、一般的なトラフィックパターン外で観察される場合があります。これらの呼び出しは通常のサービスオペレーションの一部であり、アクティブなユーザートラフィックを示すものではありません。

OpenSearch Serverless は、保管中のデータを暗号化する KMS キーにアクセス`KMSKeyInaccessibleException`できない場合、 をスローします。これは、KMS キーを無効化または削除するか、OpenSearch Serverless がキーを使用できるようにする許可を取り消す場合に発生します。

OpenSearch Serverless には、カスタマー管理について以下のアクセス許可が最低限必要です。
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

例えば、次のようになります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Action": "kms:DescribeKey",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            }
        }
    },
    {
        "Action": "kms:CreateGrant",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            },
            "ForAllValues:StringEquals": {
                "kms:GrantOperations": [
                    "Decrypt",
                    "GenerateDataKey"
                ]
            },
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }
  ]
}
```

------

OpenSearch Serverless では、[kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) のアクセス許可を使用してグラントを作成します。

詳細については、*AWS Key Management Service デベロッパーガイド*の「[AWS KMSでのキーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

### OpenSearch Serverless が で許可を使用する方法 AWS KMS
<a name="serverless-encryption-grants"></a>

OpenSearch Serverless がカスタマー管理キーを使用するためには、[グラント](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)が必要です。

新しいキーを使用してアカウントに暗号化ポリシーを作成すると、OpenSearch Serverless は [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを送信してユーザーに代わって許可を作成します AWS KMS。の権限 AWS KMS は、OpenSearch Serverless に顧客アカウントの KMS キーへのアクセスを許可するために使用されます。

OpenSearch Serverless は、以下の内部オペレーションのために、カスタマー管理キーの使用に関するグラントを必要とします。
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) リクエストを に送信 AWS KMS して、指定された対称カスタマーマネージドキー ID が有効であることを確認します。
+ オブジェクトを暗号化するためのデータキーを作成するには、[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストを KMS キーに送信します。
+ に [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを送信 AWS KMS して、暗号化されたデータキーを復号して、データの暗号化に使用できるようにします。

グラントへのアクセスの取り消しや、カスタマーマネージドキーに対するサービスのアクセスの取り消しは、いつでもできます。これを行うと、OpenSearch Serverless はカスタマー管理キーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存するすべてのオペレーションが影響を受けます。結果的に、非同期ワークフローで `AccessDeniedException` エラーが発生しその処理に失敗します。

OpenSearch Serverless は、特定の顧客管理キーにおいて、関連付けられたセキュリティポリシーやコレクションが存在しない場合、非同期ワークフローでグラントを廃止します。

### 暗号化ポリシーの作成 (コンソール)
<a name="serverless-encryption-console"></a>

暗号化ポリシーで、そのポリシーを適用する KMS キーと一連のコレクションパターンを指定します。ポリシーで定義されているパターンのいずれかに一致する新しいコレクションには、その作成時に、対応する KMS キーが割り当てられます。暗号化ポリシーは、コレクションの作成を開始する*前*に作成することをお勧めします。

**OpenSearch Serverless 暗号化ポリシーを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションパネルで **[Serverless]** (サーバーレス) を展開し、**[Encryption policies]** (暗号化ポリシー) を選択します。

1. **[Create encryption policy]** (暗号化ポリシーを作成) を選択します。

1. ポリシーの名前と説明を入力します。

1. **[Resources]** (リソース) に、この暗号化ポリシーに関する (1 つ以上の) リソースパターンを入力します。現在の AWS アカウント とリージョンにあり、新しく作成され、いずれかのパターンに一致しているコレクションが、自動的にこのポリシーに割り当てられます。例えば、`ApplicationLogs` と (ワイルドカードなしで) 入力し、後にその名前でコレクションを作成した場合、ポリシーおよび対応する KMS キーが、そのコレクションに対し割り当てられます。

   また、`Logs*` などのプレフィックスを指定して、名前が `Logs` で始まる任意の新しいコレクションに対し、ポリシーを割り当てることもできます。ワイルドカードを使用すると、複数のコレクションの暗号化設定を大規模に管理できます。

1. **[Encryption]** (暗号化) で、使用する KMS キーを選択します。

1. **[作成]** を選択します。

#### 次のステップ: コレクションを作成する
<a name="serverless-encryption-next"></a>

1 つ以上の暗号化ポリシーを設定したら、それらのポリシーで定義されているルールと一致するコレクションの作成を開始できます。手順については、「[コレクションの作成](serverless-create.md)」を参照してください。

コレクション作成の **[Encryptions]** (暗号化) ステップで、暗号化ポリシーで定義されているパターンと一致する名前が入力された場合、OpenSearch Serverless はそれを通知し、対応する KMS キーをコレクションに自動的に割り当てます。リソースパターンにワイルドカード (\$1) が含まれている場合は、その一致をオーバーライドして独自のキーを選択できます。

### 暗号化ポリシーの作成 (AWS CLI)
<a name="serverless-encryption-cli"></a>

OpenSearch Serverless API オペレーションを使用して暗号化ポリシーを作成する際は、JSON 形式で、リソースパターンと暗号化キーを指定します。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) リクエストは、インラインポリシーと.json ファイルの両方を受け入れます。

暗号化ポリシーは以下の形式になります。このサンプルファイル (`my-policy.json`) は、将来作成される `autopartsinventory` という名前のコレクションすべてと、名前が `sales` で始まるコレクションすべてに一致します。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

サービス所有のキーを使用するには、`AWSOwnedKey` に `true` を設定します。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":true
}
```

次のリクエストは暗号化ポリシーを作成します。

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy file://my-policy.json
```

その後、[CreateCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollection.html) API オペレーションを使用して、リソースパターンの 1 つと一致するコレクションを 1 つまたは複数作成します。

### 暗号化ポリシーの表示
<a name="serverless-encryption-list"></a>

コレクションを作成する際、コレクション名と一致するリソースパターンを持つポリシーを確認するために、アカウント内の既存の暗号化ポリシーを、プレビューする必要が生じることがあります。次の [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) リクエストでは、アカウント内のすべての暗号化ポリシーが一覧表示されます。

```
aws opensearchserverless list-security-policies --type encryption
```

このリクエストは、すべての設定済みの暗号化ポリシーに関する情報を返します。`policy` 要素の内容を使用して、ポリシーで定義されているパターンルールを表示します。

```
{
   "securityPolicyDetails": [ 
      { 
         "createdDate": 1663693217826,
         "description": "Sample encryption policy",
         "lastModifiedDate": 1663693217826,
         "name": "my-policy",
         "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}",
         "policyVersion": "MTY2MzY5MzIxNzgyNl8x",
         "type": "encryption"
      }
   ]
}
```

KMS キーなど、特定のポリシーに関する詳細情報を表示するには、[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) コマンドを使用します。

### 暗号化ポリシーの更新
<a name="serverless-encryption-update"></a>

暗号化ポリシー内で KMS キーを更新する場合、その変更は、設定された名前またはパターンと一致する、新規作成のコレクションだけに適用されます。KMS キーが既に割り当て済みの、既存のコレクションには影響は与えません。

同様なことが、ポリシーの一致ルールにも当てはまります。ルールを追加、変更、または削除した場合、その変更は新しく作成されたコレクションにのみ適用されます。ポリシーのルールを変更したために、コレクション名と一致しなくなったとしても、既存のコレクションに割り当てられた KMS キーは失われません。

OpenSearch Serverless コンソールで暗号化ポリシーを更新するには、**[Encryption policies]** (暗号化ポリシー) を選択し、変更するポリシーを選択した後に、**[Edit]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

OpenSearch Serverless API を使用して暗号化ポリシーを更新する場合は、[UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) オペレーションを使用します。次のリクエストでは、新しいポリシー JSON ドキュメントを使用して、暗号化ポリシーを更新します。

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy-version 2 \
    --policy file://my-new-policy.json
```

### 暗号化ポリシーの削除
<a name="serverless-encryption-delete"></a>

暗号化ポリシーを削除しても、そのポリシーで定義されている KMS キーを現在使用しているコレクションに影響はありません。OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、**[Delete]** (削除) を選択します。

また、[DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) オペレーションを使用することもできます。

```
aws opensearchserverless delete-security-policy --name my-policy --type encryption
```

## 転送中の暗号化
<a name="serverless-encryption-in-transit"></a>

OpenSearch Serverless では、コレクション内のすべてのパスは、業界標準の AES-256 暗号を使用した Transport Layer Security 1.2 (TLS) を使って、転送中に暗号化されます。Opensearch のすべての API と Dashboards へのアクセスも、TLS 1.2 を経由します。TLS は、ネットワーク上でやり取りされる情報の暗号化に使用される、業界標準の暗号化プロトコルのセットです。

# Amazon OpenSearch Serverless でのネットワークアクセス
<a name="serverless-network"></a>

Amazon OpenSearch Serverless コレクションでは、ネットワーク設定によって、そのコレクションに対しインターネット経由でパブリックネットワークからのアクセスが可能か、プライベートでアクセスする必要があるかが決まります。

プライベートアクセスは、次のいずれかまたは両方に適用できます。
+ OpenSearch Serverless マネージド VPC エンドポイント
+ Amazon Bedrock AWS のサービス などでサポートされる

コレクションでは、*OpenSearch* のエンドポイントと、対応する *OpenSearch Dashboards* のエンドポイントで、個別のネットワークアクセス設定が行えます。

ネットワークアクセスは、さまざまなソースネットワークからのアクセスを、分離して許可するためのメカニズムです。例えば、コレクションの OpenSearch Dashboards エンドポイントはパブリックアクセスが可能で、OpenSearch API エンドポイントはパブリックアクセスが可能でない場合、パブリックネットワークから接続するユーザーは、Dashboards を経由しなければコレクションデータにアクセスできません。パブリックネットワークから直接 OpenSearch API を呼び出そうとしても、ブロックされます。ソースからリソースタイプへのこのような配列には、ネットワーク設定を使用できます。Amazon OpenSearch Serverless は、IPv4 と IPv6 の両方の接続をサポートしています。

**Topics**
+ [ネットワークポリシー](#serverless-network-policies)
+ [考慮事項](#serverless-network-considerations)
+ [ネットワークポリシーの設定に必要なアクセス許可](#serverless-network-permissions)
+ [ポリシーの優先順位](#serverless-network-precedence)
+ [ネットワークポリシーの作成 (コンソール)](#serverless-network-console)
+ [ネットワークポリシーの作成 (AWS CLI)](#serverless-network-cli)
+ [ネットワークポリシーの表示](#serverless-network-list)
+ [ネットワークポリシーの更新](#serverless-network-update)
+ [ネットワークポリシーの削除](#serverless-network-delete)

## ネットワークポリシー
<a name="serverless-network-policies"></a>

ネットワークポリシーでは、その中でルールを定義し、そのルールに一致するコレクションに対し、ネットワークアクセス設定を自動的に割り当てることにより、多数のコレクションを大規模に管理できます。

ネットワークポリシーでは、一連の*ルール*を指定します。これらのルールにより、コレクションのエンドポイントと OpenSearch Dashboards のエンドポイントへのアクセス許可を定義します。各ルールは、アクセスタイプ (パブリックまたはプライベート) とリソースタイプ (コレクション、および/または OpenSearch Dashboards のエンドポイント) で構成されます。リソースタイプ (`collection` および `dashboard`) ごとに、一連のルールを指定し、ポリシーを適用する対象となるコレクションを定義します。

このポリシー例では、最初のルールで、語句 `marketing*` で始まるすべてのコレクションについて、コレクションエンドポイントとダッシュボードエンドポイントの両方で、VPC エンドポイントアクセスを使用するように指定しています。また、Amazon Bedrock アクセスも指定します。

**注記**  
Amazon Bedrock AWS のサービス などの へのプライベートアクセスは、コレクションの OpenSearch エンドポイント*にのみ*適用され、OpenSearch Dashboards エンドポイントには適用されません。`ResourceType` が であっても`dashboard`、OpenSearch Dashboards へのアクセスを許可 AWS のサービス することはできません。

2 番目のルールでは、`finance` コレクションに対してパブリックアクセスを指定していますが、これには、コレクションエンドポイントのみが使用されます (ダッシュボードからのアクセスは許可されません)。

```
[
   {
      "Description":"Marketing access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/marketing*"
            ]
         },
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/marketing*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   },
   {
      "Description":"Sales access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

このポリシーでは、OpenSearch Dashboards からのパブリックアクセスは、「finance」で始まるコレクションに対してのみ許可しています。OpenSearch API に直接アクセスする試みは、すべて失敗します。

```
[
  {
    "Description": "Dashboards access",
    "Rules": [
      {
        "ResourceType": "dashboard",
        "Resource": [
          "collection/finance*"
        ]
      }
    ],
    "AllowFromPublic": true
  }
]
```

ネットワークポリシーは、将来作成するコレクションだけでなく、既存のコレクションにも適用が可能です。コレクションを作成した後に、そのコレクション名と一致するルールを含むネットワークポリシーを作成できます。コレクションを作成する前に、必ずしもネットワークポリシーを用意しておく必要はありません。

## 考慮事項
<a name="serverless-network-considerations"></a>

コレクションのためにネットワークアクセスを設定する際は、以下の点を考慮してください。
+ コレクションのために VPC エンドポイントアクセスを設定する場合は、最初に、少なくとも 1 つの [OpenSearch Serverless マネージド VPC エンドポイント](serverless-vpc.md)を作成しておく必要があります。
+ へのプライベートアクセスは、OpenSearch Dashboards エンドポイントではなく、コレクションの OpenSearch エンドポイント AWS のサービス にのみ適用されます。`ResourceType` が であっても`dashboard`、OpenSearch Dashboards へのアクセスを許可 AWS のサービス することはできません。
+ パブリックネットワークからアクセスできるコレクションに対しては、OpenSearch Serverless マネージド VPC エンドポイントとすべての AWS のサービスからもアクセスできます。
+ 単一のコレクションに対して、複数のネットワークポリシーを適用できます。詳細については、「[ポリシーの優先順位](#serverless-network-precedence)」を参照してください。

## ネットワークポリシーの設定に必要なアクセス許可
<a name="serverless-network-permissions"></a>

OpenSearch Serverless のネットワークアクセスでは、次の AWS Identity and Access Management (IAM) アクセス許可を使用します。IAM 条件を指定しすることで、特定のコレクションに関連付けられたネットワークポリシーのみをユーザーが使用するように制限できます。
+ `aoss:CreateSecurityPolicy` – ネットワークアクセスポリシーを作成します。
+ `aoss:ListSecurityPolicies` – 現在のアカウントにある、すべてのネットワークポリシーを一覧表示します。
+ `aoss:GetSecurityPolicy` – ネットワークアクセスポリシーの設定を表示します。
+ `aoss:UpdateSecurityPolicy` – 特定のネットワークアクセスポリシーを変更し、VPC ID またはパブリックアクセスの指定を変更します。
+ `aoss:DeleteSecurityPolicy` – ネットワークアクセスポリシーを (すべてのコレクションからデタッチした後に) 削除します。

次の ID ベースのアクセスポリシーにより、ユーザーはすべてのネットワークポリシーを表示し、リソースパターン `collection/application-logs` を含むポリシーの更新が行えるようになります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aoss:UpdateSecurityPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": "application-logs"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:ListSecurityPolicies",
                "aoss:GetSecurityPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注記**  
さらに、OpenSearch Serverless には、コレクションリソースの `aoss:APIAccessAll` および `aoss:DashboardsAccessAll` アクセス許可が必要です。詳細については、「[OpenSearch API オペレーションの使用](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)」を参照してください。

## ポリシーの優先順位
<a name="serverless-network-precedence"></a>

ポリシー内またはポリシー間に、複数のネットワークポリシールールが同時に存在する場合があります。この場合、パブリックアクセスを指定するルールとプライベートアクセスを指定するルールでは、(これら*両方*のルールに共通して適用されるコレクションにおいて) 前者のルールが優先されます。

例えば、次のポリシーでは、2 種類のルールが `finance` コレクションにネットワークアクセスを割り当てています。一方のルールでは VPC アクセスを、もう一方のルールではパブリックアクセスをそれぞれ指定しています。この場合、*finance コレクションでのみ*、パブリックアクセスは VPC アクセスをオーバーライドします (両方のルールに含まれるのがこのコレクションであるため)。つまり、finance コレクションにアクセスできるのは、パブリックネットワークからとなります。sales コレクションには、指定されたエンドポイントからの VPC アクセスが許可されます。

```
[
   {
      "Description":"Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/sales",
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ]
   },
   {
      "Description":"Rule 2",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

異なるルールの複数の VPC エンドポイントが 1 つのコレクションに適用されている場合、これらのルールは追加的に認識され、指定されたすべてのエンドポイントから、そのコレクションへのアクセスが可能になります。`AllowFromPublic` を `true` に設定し、さらに 1 つ以上の `SourceVPCEs` または `SourceServices` を指定した場合には、OpenSearch Serverless により VPC エンドポイントは無視され、関連するコレクションにはパブリックアクセスが提供されます。

## ネットワークポリシーの作成 (コンソール)
<a name="serverless-network-console"></a>

ネットワークポリシーは、将来作成するコレクションだけでなく、既存のコレクションにも適用が可能です。コレクションの作成を開始する前に、ネットワークポリシーを作成しておくことをお勧めします。

**OpenSearch Serverless のネットワークポリシーを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションパネルで **[Serverless]** (サーバーレス) を展開し、**[Network policie]** (ネットワークポリシー) を選択します。

1. **[Create network policy]** (ネットワークポリシーを作成) を選択します。

1. ポリシーの名前と説明を入力します。

1. 1 つ以上の*ルール*を指定します。これらのルールは、OpenSearch Serverless コレクションと、その OpenSearch Dashboards エンドポイントへのアクセス許可を定義しています。

   各ルールには以下の要素が含まれます。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-network.html)

   選択したリソースタイプごとに、ポリシー設定を適用する既存のコレクションを選択すること、および/または 1 つ以上のリソースパターンを作成することができます。リソースパターンはプレフィックスとワイルドカード (\$1) で構成され、ポリシー設定の適用対象となるコレクションを定義します。

   例えば、`Marketing*` というパターンを含めると、名前が「Marketing」で始まる新規または既存のコレクションには、このポリシーのネットワーク設定が自動的に適用されます。ワイルドカード (`*`) によって、既存のコレクションや将来作成されるコレクションすべてにポリシーが適用されます。

   また、ワイルドカードなしで、*将来*作成されるコレクションの名前 (例: `Finance`) を指定することもできます。OpenSearch Serverless は、これと同じ名前を使用して新しく作成されたすべてのコレクションに、同じポリシー設定を適用します。

1. ポリシー設定を確認し、変更点がない場合は、**[Create]** (作成) を選択します。

## ネットワークポリシーの作成 (AWS CLI)
<a name="serverless-network-cli"></a>

OpenSearch Serverless API オペレーションを使用してネットワークポリシーを作成するには、JSON 形式でルールを指定します。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) リクエストは、インラインポリシーと.json ファイルの両方を受け入れます。すべてのコレクションとパターンは、`collection/<collection name|pattern>` の形式にする必要があります。

**注記**  
リソースタイプ `dashboards` では OpenSearch Dashboards へのアクセスのみが許可されます。ただし、OpenSearch Dashboards が機能するためには、同じソースからコレクションに対するアクセスも許可する必要があります。例については、以下に示す 2 番目のポリシーを参照してください。

プライベートアクセスを指定するには、次の要素の 1 つまたは両方を含めます。
+ `SourceVPCEs` – 1 つ以上の OpenSearch Serverless マネージド VPC エンドポイントを指定します。
+ `SourceServices` – サポートされている 1 つ以上の識別子を指定します AWS のサービス。現在、次のサービス識別子がサポートされています。
  + `bedrock.amazonaws.com` – Amazon Bedrock

次のネットワークポリシー例では、VPC エンドポイントと Amazon Bedrock へのプライベートアクセスを、`log*` プレフィックスで始まるコレクションのコレクションエンドポイントにのみ提供しています。認証されたユーザーは OpenSearch Dashboards にサインインできず、コレクションエンドポイントにはプログラムでしかアクセスできません。

```
[
   {
      "Description":"Private access for log collections",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/log*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   }
]
```

以下のポリシーでは、`finance` という名前の単一のコレクションに対して、OpenSearch エンドポイント*と* OpenSearch Dashboards の両方でのパブリックアクセスを提供します。対象のコレクションが存在しない場合、ネットワーク設定は、そのコレクションが作成された時点で適用されます。

```
[
   {
      "Description":"Public access for finance collection",
      "Rules":[
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/finance"
            ]
         },
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

次のリクエストにより、上記のネットワークポリシーが作成されます。

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type network \
    --policy "[{\"Description\":\"Public access for finance collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/finance\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/finance\"]}],\"AllowFromPublic\":true}]"
```

このポリシーを JSON ファイルで指定するには、`--policy file://my-policy.json` の形式を使用します。

## ネットワークポリシーの表示
<a name="serverless-network-list"></a>

コレクションを作成する前に、アカウント内の既存のネットワークポリシーをプレビューして、コレクション名と一致するリソースパターンが含まれているポリシーを確認しておきたい場合があります。次の [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) リクエストにより、アカウント内のすべてのネットワークポリシーが一覧表示されます。

```
aws opensearchserverless list-security-policies --type network
```

このリクエストは、設定されているすべてのネットワークポリシーに関する情報を返します。1 つの特定のポリシーで定義されているパターンルールを表示するには、レスポンスの `securityPolicySummaries` 要素の内容でポリシー情報を探します。このポリシーの `name` と `type` を書き留め、[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) リクエストでこれらのプロパティを使用して、次のポリシーの詳細を含むレスポンスを受信します。

```
{
    "securityPolicyDetail": [
        {
            "type": "network",
            "name": "my-policy",
            "policyVersion": "MTY2MzY5MTY1MDA3Ml8x",
            "policy": "[{\"Description\":\"My network policy rule\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection/*\"]}],\"AllowFromPublic\":true}]",
            "createdDate": 1663691650072,
            "lastModifiedDate": 1663691650072
        }
    ]
}
```

特定のポリシーの詳細情報を表示するには、[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) コマンドを使用します。

## ネットワークポリシーの更新
<a name="serverless-network-update"></a>

ネットワークの VPC エンドポイントまたはパブリックアクセスの指定を変更すると、関連するすべてのコレクションが影響を受けます。OpenSearch Serverless コンソールでネットワークポリシーを更新するには、**[Network policies]** (ネットワークポリシー) を展開してから変更するポリシーを選択した後、**[Edit]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

OpenSearch Serverless API を使用してネットワークポリシーを更新するには、[UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) コマンドを使用します。リクエストには、ポリシーのバージョンを含める必要があります。ポリシーのバージョンは、`ListSecurityPolicies` または `GetSecurityPolicy` コマンドを使用して取得できます。最新のポリシーバージョンを含めると、他のユーザーによる変更を意図せず上書きしてしまうことがなくなります。

次のリクエストは、ネットワークポリシーを新しいポリシーの JSON ドキュメントで更新します。

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type network \
    --policy-version MTY2MzY5MTY1MDA3Ml8x \
    --policy file://my-new-policy.json
```

## ネットワークポリシーの削除
<a name="serverless-network-delete"></a>

ネットワークポリシーを削除する前に、そのポリシーをすべてのコレクションからデタッチする必要があります。OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、**[Delete]** (削除) を選択します。

[DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) コマンドを使用することもできます。

```
aws opensearchserverless delete-security-policy --name my-policy --type network
```

# Amazon OpenSearch Serverless での FIPS コンプライアンス
<a name="fips-compliance-opensearch-serverless"></a>

Amazon OpenSearch Serverless は、連邦情報処理規格 (Federal Information Processing Standards/FIPS) 140-2 をサポートしています。これは、機密情報を保護する暗号モジュールのセキュリティ要件を規定する、米国およびカナダ政府の基準です。OpenSearch Serverless を使用して FIPS 対応エンドポイントに接続すると、FIPS 検証済み暗号化ライブラリを使用して暗号化オペレーションが行われます。

OpenSearch Serverless FIPS エンドポイントは、FIPS AWS リージョン がサポートされている で使用できます。これらのエンドポイントは、すべての通信に TLS 1.2 以降と FIPS 検証済み暗号化アルゴリズムを使用します。詳細については、「*AWS Verified Access ユーザーガイド*」の「[FIPS 準拠](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)」を参照してください。

**Topics**
+ [OpenSearch Serverless での FIPS エンドポイントの使用](#using-fips-endpoints-opensearch-serverless)
+ [AWS SDKs](#using-fips-endpoints-aws-sdks)
+ [VPC エンドポイントのセキュリティグループを設定する](#configuring-security-groups-vpc-endpoints)
+ [FIPS VPC エンドポイントを使用する](#using-fips-vpc-endpoint)
+ [FIPS コンプライアンスを検証する](#verifying-fips-compliance)
+ [プライベートホストゾーンの FIPS エンドポイント接続の問題を解決する](serverless-fips-endpoint-issues.md)

## OpenSearch Serverless での FIPS エンドポイントの使用
<a name="using-fips-endpoints-opensearch-serverless"></a>

FIPS がサポートされている AWS リージョン では、OpenSearch Serverless コレクションは標準エンドポイントと FIPS 準拠エンドポイントの両方からアクセスできます。詳細については、「*AWS Verified Access ユーザーガイド*」の「[FIPS 準拠](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)」を参照してください。

次の例では、*collection\$1id* と *AWS リージョン* をご自身のコレクション ID とその AWS リージョンに置き換えます。
+ **標準エンドポイント** – **https://*collection\$1id*.*AWS リージョン*.aoss.amazonaws.com**
+ **FIPS 準拠のエンドポイント** – **https://*collection\$1id*.*AWS リージョン*.aoss-fips.amazonaws.com**

同様に、OpenSearch Dashboards には、標準エンドポイントと FIPS 準拠エンドポイントの両方からアクセスできます。
+ **標準 Dashboards エンドポイント** – **https://*collection\$1id*.*AWS リージョン*.aoss.amazonaws.com/\$1dashboards**
+ **FIPS 準拠の Dashboards エンドポイント** – **https://*collection\$1id*.*AWS リージョン*.aoss-fips.amazonaws.com/\$1dashboards**

**注記**  
FIPS 対応リージョンでは、標準エンドポイントと FIPS 準拠エンドポイントの両方が FIPS 準拠の暗号化を提供します。FIPS 固有のエンドポイントは、名前に **FIPS** が使用されているエンドポイントの使用を特に義務付けるコンプライアンス要件を満たすのに役立ちます。

## AWS SDKs
<a name="using-fips-endpoints-aws-sdks"></a>

 AWS SDKs を使用する場合は、クライアントの作成時に FIPS エンドポイントを指定できます。次の例では、*collection\$1id* と *AWS リージョン* をご自身のコレクション ID とその AWS リージョンに置き換えます。

```
# Python SDK example
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth
import boto3
host = '"https://collection_id.AWS リージョン.aoss-fips.amazonaws.com"
region = 'us-west-2'
service = 'aoss'
credentials = boto3.Session().get_credentials()
auth = AWSV4SignerAuth(credentials, region, service)
client = OpenSearch(
    hosts = [{'host': host, 'port': 443}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection,
    pool_maxsize = 20
)
```

## VPC エンドポイントのセキュリティグループを設定する
<a name="configuring-security-groups-vpc-endpoints"></a>

FIPS 準拠の Amazon VPC (VPC) エンドポイントと適切に通信するには、セキュリティグループを作成または変更して、OpenSearch Serverless にアクセスする必要がある VPC 内のリソースからのインバウンド HTTPS トラフィック (TCP ポート 443) を許可します。次に、このセキュリティグループを VPC エンドポイントに関連付けます。これは作成時に行うか、作成後にエンドポイントを変更して行います。詳細については、「*Amazon VPC ユーザーガイド*」の「[セキュリティグループの作成](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)」を参照してください。

## FIPS VPC エンドポイントを使用する
<a name="using-fips-vpc-endpoint"></a>

FIPS 準拠の VPC エンドポイントを作成したら、それを使用して VPC 内のリソースから OpenSearch Serverless にアクセスできます。API オペレーションにエンドポイントを使用するには、「[OpenSearch Serverless での FIPS エンドポイントの使用](#using-fips-endpoints-opensearch-serverless)」セクションの説明に従って、リージョン FIPS エンドポイントを使用するように SDK を設定します。OpenSearch Dashboards にアクセスするには、コレクション固有の Dashboards URL を使用します。この URL は、VPC 内からアクセスすると、FIPS 準拠の VPC エンドポイントを自動的にルーティングします。詳細については、「[Amazon OpenSearch Service での OpenSearch Dashboards の使用](dashboards.md)」を参照してください。

## FIPS コンプライアンスを検証する
<a name="verifying-fips-compliance"></a>

OpenSearch Serverless への接続で FIPS 準拠の暗号化が使用されていることを確認するには、 AWS CloudTrail を使用して OpenSearch Serverless に対する API コールをモニタリングします。API コールについて、CloudTrail ログの `eventSource` フィールドに `aoss-fips.amazonaws.com` が表示されていることを確認します。

OpenSearch Dashboards にアクセスするには、ブラウザ開発者ツールを使用して TLS 接続の詳細を検査し、FIPS 準拠の暗号スイートが使用されていることを確認します。

# プライベートホストゾーンの FIPS エンドポイント接続の問題を解決する
<a name="serverless-fips-endpoint-issues"></a>

FIPS エンドポイントは、パブリックアクセスを持つ Amazon OpenSearch Serverless コレクションと連携します。新しく作成された VPC エンドポイントを使用する新しく作成された VPC コレクションの場合、FIPS エンドポイントは期待どおりに機能します。他の VPC コレクションでは、FIPS エンドポイントが正しく動作するように手動で設定する必要がある場合があります。

**Amazon Route 53 で FIPS プライベートホストゾーンを設定するには**

1. Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

1. ホストゾーンを確認します。

   1. コレクションがあるホストゾーンを見つけ AWS リージョン ます。

   1. ホストゾーンの命名パターンを確認します。
      + 非 FIPS 形式: `region.aoss.amazonaws.com`。
      + FIPS 形式: `region.aoss-fips.amazonaws.com`。

   1. すべてのホストゾーンの **[タイプ]** が **[プライベートホストゾーン]** に設定されていることを確認します。

1. FIPS プライベートホストゾーンがない場合:

   1. 対応する非 FIPS プライベートホストゾーンを選択します。

   1. **[関連付けられた VPC]** 情報をコピーします。例: `vpc-1234567890abcdef0 | us-east-2`。

   1. ワイルドカードドメインレコードを見つけます。例: `*.us-east-2.aoss.amazonaws.com`。

   1. **[値/トラフィックのルーティング先]** 情報をコピーします。例:`uoc1c1qsw7poexampleewjeno1pte3rw.3ym756xh7yj.aoss.searchservices.aws`

1. FIPS プライベートホストゾーンを作成します。

   1. FIPS 形式で新しいプライベートホストゾーンを作成します。例: `us-east-2.aoss-fips.amazonaws.com`。

   1. **[関連付けられた VPC]** には、非 FIPS プライベートホストゾーンからコピーした VPC 情報を入力します。

1. 以下の設定でルールを追加します。

   1. レコード名: \$1

   1. レコードタイプ: CNAME

   1. 値: 先ほどコピーした **[値/トラフィックのルーティング先]** 情報を入力します。

## 一般的な問題
<a name="serverless-fips-endpoint-common-problems"></a>

FIPS 準拠の VPC エンドポイントで接続の問題が発生した場合は、次の情報を使用して問題を解決します。
+ DNS 解決の失敗 – VPC 内の FIPS エンドポイントドメイン名を解決できない
+ 接続タイムアウト – FIPS エンドポイントへのリクエストがタイムアウトする
+ アクセス拒否エラー – FIPS エンドポイントの使用時に認証または認可が失敗する
+ VPC のみのコレクションにプライベートホストゾーンレコードがない

**FIPS エンドポイント接続のトラブルシューティングを行うには**

1. プライベートホストゾーンの設定を確認します。

   1. FIPS エンドポイントドメイン (`*.region.aoss-fips.amazonaws.com`) にプライベートホストゾーンが存在することを確認します。

   1. プライベートホストゾーンが正しい VPC に関連付けられていることを確認します。

      詳細については、「*Amazon Route 53 デベロッパーガイド*」の[「Private hosted zones](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted- zones-private.html)」および「*AWS PrivateLink ガイド*」の「[Manage DNS names](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html)」を参照してください。

1. DNS 解決をテストします。

   1. VPC の EC2 インスタンスに接続します。

   1. 次のコマンドを実行します。

      ```
      nslookup collection-id.region.aoss-fips.amazonaws.com
      ```

   1. レスポンスに VPC エンドポイントのプライベート IP アドレスが含まれていることを確認してください。

      詳細については、「*Amazon VPC ユーザーガイド*」の「[Endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#endpoint-dns-verification)」および「[DNS attributes](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc- dns-troubleshooting)」を参照してください。

1. セキュリティグループの設定を確認します。

   1. VPC エンドポイントにアタッチされたセキュリティグループが、リソースからの HTTPS トラフィック (ポート 443) を許可していることを確認します。

   1. リソースのセキュリティグループが VPC エンドポイントへのアウトバウンドトラフィックを許可していることを確認します。

   詳細については、「*AWS PrivateLink ガイド*」の「[Endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-security-groups)」、および「*Amazon VPC ユーザーガイド*」の「[Security groups](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#SecurityGroupRules)」を参照してください。

1. ネットワーク ACL 設定を確認します。

   1. ネットワーク ACL によってリソースと VPC エンドポイント間のトラフィックが許可されていることを確認します。

     詳細については、「Amazon VPC ユーザーガイド」の「[ネットワーク ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network- acls.html#nacl-troubleshooting)」を参照してください。

1. エンドポイントポリシーを確認します。

   1. VPC エンドポイントポリシーが OpenSearch Serverless リソースで必要なアクションを許可していることを確認します。

     詳細については、「*AWS PrivateLink ガイド*」の「[VPC endpoint permissions required](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html#serverless-vpc-permissions)」および「[Endpoints policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#vpc-endpoint-policies)」を参照してください。

**ヒント**  
VPC でカスタム DNS リゾルバーを使用する場合は、`*.amazonaws.com`ドメインのリクエストを AWS サーバーに転送するように設定します。

# Amazon OpenSearch Serverless のデータアクセスコントロール
<a name="serverless-data-access"></a>

Amazon OpenSearch Serverless のデータアクセスコントロールを使用すると、アクセスメカニズムやネットワークソースに関係なく、ユーザーがコレクションやインデックスにアクセスできるようにすることができます。IAM ロールと [SAML アイデンティティ](serverless-saml.md)へのアクセスを提供できます。

アクセス許可は、コレクションとインデックスリソースに適用される*データアクセスポリシー*を通じて管理します。データアクセスポリシーは、特定のパターンに一致するコレクションとインデックスにアクセス許可を自動的に割り当てることにより、大規模なコレクションを管理するのに役立ちます。1 つのリソースに複数のデータアクセスポリシーを適用できます。OpenSearch Dashboards URL にアクセスするには、コレクションのデータアクセスポリシーが必要になります。

**Topics**
+ [データアクセスポリシーと IAM ポリシーの比較](#serverless-data-access-vs-iam)
+ [データアクセスポリシーの設定に必要な IAM アクセス許可](#serverless-data-access-permissions)
+ [ポリシー構文](#serverless-data-access-syntax)
+ [サポートされているポリシーのアクセス許可](#serverless-data-supported-permissions)
+ [OpenSearch Dashboards のサンプルデータセット](#serverless-data-sample-index)
+ [データアクセスポリシーの作成 (コンソール)](#serverless-data-access-console)
+ [データアクセスポリシーの作成 (AWS CLI)](#serverless-data-access-cli)
+ [データアクセスポリシーの表示](#serverless-data-access-list)
+ [データアクセスポリシーの更新](#serverless-data-access-update)
+ [データアクセスポリシーの削除](#serverless-data-access-delete)
+ [クロスアカウントデータアクセス](#serverless-data-access-cross)

## データアクセスポリシーと IAM ポリシーの比較
<a name="serverless-data-access-vs-iam"></a>

データアクセスポリシーは、 AWS Identity and Access Management (IAM) ポリシーとは論理的に分離されます。IAM アクセス許可は、`CreateCollection` や `ListAccessPolicies` などの[サーバーレス API オペレーション](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)へのアクセスを制御します。データアクセスポリシーは、OpenSearch Serverless がサポートする `PUT <index>` や `GET _cat/indices` などの [OpenSearch オペレーション](#serverless-data-supported-permissions)へのアクセスを制御します。

`aoss:CreateAccessPolicy` や `aoss:GetAccessPolicy` (次のセクションで説明) などのデータアクセスポリシーの API オペレーションへのアクセスを制御する IAM アクセス許可は、データアクセスポリシーで指定されているアクセス許可には影響しません。

例えば、IAM ポリシーによってユーザーによる `collection-a` に対するデータアクセスポリシーの作成は拒否されているが、すべてのコレクション (`*`) に対するデータアクセスポリシーの作成は許可されているとします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aoss:collection": "collection-a"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

ユーザーが*すべて*のコレクション (`collection/*` または `index/*/*`) に特定のアクセス許可を付与するデータアクセスポリシーを作成した場合、ポリシーはコレクション A を含むすべてのコレクションに適用されます。

**重要**  
OpenSearch Serverless コレクション内のデータにアクセスするためには、データアクセスポリシー内で許可が付与されているだけでは不十分です。関連付けられたプリンシパル*にも*、IAM アクセス許可 `aoss:APIAccessAll` および `aoss:DashboardsAccessAll` に対するアクセスが付与されている必要があります。いずれの許可もコレクションリソースに対するフルアクセスを付与し、Dashboards 許可も OpenSearch Dashboards に対するアクセスを提供します。プリンシパルがこれらの両方の IAM 許可を持っていない場合、コレクションにリクエストを送信しようとすると 403 エラーが表示されます。詳細については、「[OpenSearch API オペレーションの使用](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)」を参照してください。

## データアクセスポリシーの設定に必要な IAM アクセス許可
<a name="serverless-data-access-permissions"></a>

OpenSearch Serverless のデータアクセスコントロールは、次の IAM アクセス許可を使用します。IAM 条件を指定して、ユーザーを特定のアクセスポリシー名に制限できます。
+ `aoss:CreateAccessPolicy` – アクセスポリシーを作成します。
+ `aoss:ListAccessPolicies` – すべてのアクセスポリシーを一覧表示します。
+ `aoss:GetAccessPolicy` – 特定のアクセスポリシーの詳細を表示します。
+ `aoss:UpdateAccessPolicy` – アクセスポリシーを変更します。
+ `aoss:DeleteAccessPolicy` – アクセスポリシーを削除します。

次の ID ベースのアクセスポリシーでは、ユーザーはすべてのアクセスポリシーを表示し、リソースパターン `collection/logs` を含むポリシーを更新できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:GetAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "aoss:UpdateAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "logs"
                    ]
                }
            }
        }
    ]
}
```

------

**注記**  
さらに、OpenSearch Serverless には、コレクションリソースの `aoss:APIAccessAll` および `aoss:DashboardsAccessAll` アクセス許可が必要です。詳細については、「[OpenSearch API オペレーションの使用](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)」を参照してください。

## ポリシー構文
<a name="serverless-data-access-syntax"></a>

データアクセスポリシーには、次の要素を持つ一連のルールが含まれています。


| Element | 説明 | 
| --- | --- | 
| ResourceType | アクセス許可が適用されるリソースのタイプ (コレクションまたはインデックス)。エイリアスとテンプレートのアクセス許可はコレクションレベルで、データの作成、変更、検索のアクセス許可はインデックスレベルです。詳細については、「[Supported policy permissions](#serverless-data-supported-permissions)」(サポートされているポリシーのアクセス許可) を参照してください。 | 
| Resource | リソース名やパターンのリスト。パターンはプレフィックスの後にワイルドカード (\$1) が続くもので、これによって関連付けられたアクセス許可を複数のリソースに適用できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-data-access.html) | 
| Permission | 指定されたリソースに付与するアクセス許可のリスト。これによって許可されるアクセス許可とオペレーションの完全なリストについては、「[サポートされる OpenSearch API オペレーションとアクセス許可](serverless-genref.md#serverless-operations)」を参照してください。 | 
| Principal | アクセス権が付与される 1 つ以上のプリンシパルのリスト。プリンシパルは、IAM ロール ARN または SAML アイデンティティにすることができます。これらのプリンシパルは現在の AWS アカウント内にある必要があります。データアクセスポリシーはクロスアカウントアクセスを直接サポートしていませんが、別の のユーザーがコレクション所有アカウントで引き受け AWS アカウント ることができるロールをポリシーに含めることができます。詳細については、「[クロスアカウントデータアクセス](#serverless-data-access-cross)」を参照してください。 | 

次のポリシー例では、`autopartsinventory` というコレクションおよび `sales*` というプレフィックスで始まるすべてのコレクションにエイリアスとテンプレートのアクセス許可を付与します。また、`autopartsinventory` コレクション内のすべてのインデックス、および `orders*` というプレフィックスで始まる `salesorders` コレクション内のすべてのインデックスに読み取りおよび書き込みアクセス許可を付与します。

```
[
   {
      "Description": "Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/autopartsinventory",
               "collection/sales*"
            ],
            "Permission":[
               "aoss:CreateCollectionItems",
               "aoss:UpdateCollectionItems",
               "aoss:DescribeCollectionItems"
            ]
         },
         {
            "ResourceType":"index",
            "Resource":[
               "index/autopartsinventory/*",
               "index/salesorders/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie",
         "saml/123456789012/anotherprovider/group/Accounting"
      ]
   }
]
```

ポリシー内でアクセスを明示的に拒否することはできません。したがって、ポリシーのアクセス許可はすべて追加的です。例えば、あるポリシーでユーザーに `aoss:ReadDocument` を付与し、別のポリシーで `aoss:WriteDocument` を付与した場合、ユーザーには*両方*のアクセス許可が付与されます。3 番目のポリシーで同じユーザーに `aoss:*` を付与した場合、そのユーザーは関連付けられたインデックスで*すべて*のアクションを実行できます。制限の厳しいアクセス許可が制限の緩いアクセス許可よりも優先されることはありません。

## サポートされているポリシーのアクセス許可
<a name="serverless-data-supported-permissions"></a>

データアクセスポリシーでは、次のアクセス許可がサポートされています。各アクセス許可で実行できる OpenSearch API オペレーションについては、「[サポートされる OpenSearch API オペレーションとアクセス許可](serverless-genref.md#serverless-operations)」を参照してください。

**コレクションアクセス許可**
+ `aoss:CreateCollectionItems`
+ `aoss:DeleteCollectionItems`
+ `aoss:UpdateCollectionItems`
+ `aoss:DescribeCollectionItems`
+ `aoss:*`

**インデックスアクセス許可**
+ `aoss:ReadDocument`
+ `aoss:WriteDocument`
+ `aoss:CreateIndex`
+ `aoss:DeleteIndex`
+ `aoss:UpdateIndex`
+ `aoss:DescribeIndex`
+ `aoss:*`

## OpenSearch Dashboards のサンプルデータセット
<a name="serverless-data-sample-index"></a>

OpenSearch Dashboards には、独自のデータを追加する前に Dashboards を調べるのに役立つ、視覚化、ダッシュボード、その他ツールを備えた、[サンプルデータセット](https://opensearch.org/docs/latest/dashboards/quickstart-dashboards/#adding-sample-data)が用意されています。このサンプルデータからインデックスを作成するには、処理するデータセットへのアクセスを許可する、データアクセスポリシーが必要になります。次のポリシーでは、ワイルドカード (`*`) を使用して、3 つのサンプルデータセットすべてへのアクセスを許可します。

```
[
  {
    "Rules": [
      {
        "Resource": [
          "index/<collection-name>/opensearch_dashboards_sample_data_*"
        ],
        "Permission": [
          "aoss:CreateIndex",
          "aoss:DescribeIndex",
          "aoss:ReadDocument"
        ],
        "ResourceType": "index"
      }
    ],
    "Principal": [
      "arn:aws:iam::<account-id>:user/<user>"
    ]
  }
]
```

## データアクセスポリシーの作成 (コンソール)
<a name="serverless-data-access-console"></a>

ビジュアルエディタを使用して、または JSON 形式で、データアクセスポリシーを作成できます。ポリシーで定義されているパターンのいずれかに一致する新しいコレクションには、対応するアクセス許可がコレクションの作成時に割り当てられます。

**OpenSearch Serverless データアクセスポリシーを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで **[サーバーレス]** を展開し、**[セキュリティ]** の下の **[データアクセスポリシー]** を選択します。

1. **[Create access policy]** (アクセスポリシーの作成) を選択します。

1. ポリシーの名前と説明を入力します。

1. ポリシーの最初のルールの名前を入力します。例えば、「Logs collection access」。

1. **[Add principals]** (プリンシパルの追加) を選択し、データアクセス権が付与される IAM ロール、または [SAML ユーザーとグループ](serverless-saml.md)を 1 つ、または複数選択します。
**注記**  
ドロップダウンメニューからプリンシパルを選択するには、`iam:ListUsers` および `iam:ListRoles` アクセス許可 (IAM プリンシパルの場合) および `aoss:ListSecurityConfigs` アクセス許可 (SAML ID の場合) が必要です。

1. **[Grant]** (付与) を選択し、エイリアス、テンプレート、およびインデックスのアクセス許可を選択して、関連するプリンシパルに付与します。アクセス許可とそれによって許可されるアクセスの完全なリストについては、「[サポートされる OpenSearch API オペレーションとアクセス許可](serverless-genref.md#serverless-operations)」を参照してください。

1. (オプション) ポリシーに追加のルールを設定します。

1. **[作成]** を選択します。ポリシーを作成してからアクセス許可が適用されるまでに 1 分程度かかる場合があります。5 分以上かかる場合は、[サポート](https://console.aws.amazon.com/support/home) にお問い合わせください。

**重要**  
ポリシーにインデックス許可のみが含まれていてコレクション許可が含まれていない場合でも、`Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection` といった、一致するコレクションに関するメッセージが表示されることがあります。この警告は無視できます。許可されたプリンシパルは引き続き、それぞれに割り当てられたインデックス関連の操作をコレクションで実行できます。

## データアクセスポリシーの作成 (AWS CLI)
<a name="serverless-data-access-cli"></a>

OpenSearch Serverless API を使用してデータアクセスポリシーを作成するには、`CreateAccessPolicy` コマンドを使用します。コマンドは、インラインポリシーと .json ファイルの両方を受け入れます。インラインポリシーは [JSON エスケープ文字列](https://www.freeformatter.com/json-escape.html)としてエンコードする必要があります。

次のリクエストで、データアクセスポリシーが作成されます。

```
aws opensearchserverless create-access-policy \
    --name marketing \
    --type data \
    --policy "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]"
```

.json ファイル内でポリシーを指定するには、`--policy file://my-policy.json` の形式を使用します。

ポリシーに含まれるプリンシパルは、アクセス権が付与された [OpenSearch オペレーション](#serverless-data-supported-permissions)を使用できるようになりました。

## データアクセスポリシーの表示
<a name="serverless-data-access-list"></a>

コレクションを作成する前に、アカウント内の既存のデータアクセスポリシーをプレビューして、コレクション名と一致するリソースパターンがあるポリシーを確認することをお勧めします。次の [ListAccessPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListAccessPolicies.html) リクエストでは、アカウント内のすべてのデータアクセスポリシーが一覧表示されます。

```
aws opensearchserverless list-access-policies --type data
```

リクエストは、設定されているすべてのデータアクセスポリシーに関する情報を返します。1 つの特定のポリシーで定義されているパターンルールを表示するには、レスポンスの `accessPolicySummaries` 要素の内容でポリシー情報を探します。このポリシーの `name` と `type` を書き留め、[GetAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetAccessPolicy.html) リクエストでこれらのプロパティを使用して、次のポリシーの詳細を含むレスポンスを受信します。

```
{
    "accessPolicyDetails": [
        {
            "type": "data",
            "name": "my-policy",
            "policyVersion": "MTY2NDA1NDE4MDg1OF8x",
            "description": "My policy",
            "policy": "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]",
            "createdDate": 1664054180858,
            "lastModifiedDate": 1664054180858
        }
    ]
}
```

次のようにリソースフィルターを追加して、結果を特定のコレクションまたはインデックスを含むポリシーに限定できます。

```
aws opensearchserverless list-access-policies --type data --resource "index/autopartsinventory/*"
```

特定のポリシーに関する詳細を表示するには、[GetAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetAccessPolicy.html) コマンドを使用します。

## データアクセスポリシーの更新
<a name="serverless-data-access-update"></a>

データアクセスポリシーを更新すると、関連するすべてのコレクションが影響を受けます。OpenSearch Serverless コンソールでデータアクセスポリシーを更新するには、**[Data access control]** (データアクセスコントロール) を選択し、変更するポリシーを選択して **[Edit]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

OpenSearch Serverless API を使用してデータアクセスポリシーを更新するには、`UpdateAccessPolicy` リクエストを送信します。ポリシーバージョンを含める必要があります。ポリシーバージョンは、`ListAccessPolicies` または `GetAccessPolicy` コマンドを使用して取得できます。最新のポリシーバージョンを含めると、他のユーザーによる変更を意図せず上書きしてしまうことがなくなります。

次の [UpdateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateAccessPolicy.html) リクエストは、データアクセスポリシーを新しいポリシー JSON ドキュメントで更新します。

```
aws opensearchserverless update-access-policy \
    --name sales-inventory \
    --type data \
    --policy-version MTY2NDA1NDE4MDg1OF8x \
    --policy file://my-new-policy.json
```

ポリシーを更新してから新しいアクセス許可が適用されるまでに数分かかる場合があります。

## データアクセスポリシーの削除
<a name="serverless-data-access-delete"></a>

データアクセスポリシーを削除すると、関連するすべてのコレクションは、ポリシーで定義されているアクセス権を失います。ポリシーを削除する前に、IAM ユーザーと SAML ユーザーがコレクションに適切なアクセス権を持っていることを確認してください。OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、**[Delete]** (削除) を選択します。

次のように [DeleteAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteAccessPolicy.html) コマンドを使用することもできます。

```
aws opensearchserverless delete-access-policy --name my-policy --type data
```

## クロスアカウントデータアクセス
<a name="serverless-data-access-cross"></a>

クロスアカウント ID またはクロスアカウントコレクションを使用してデータアクセスポリシーを作成することはできませんが、ロールの引き受けオプションを使用してクロスアカウントアクセスを設定することもできます。例えば、`account-b` がアクセスする必要があるコレクションを `account-a` が所有している場合、`account-b` のユーザーは `account-a` でロールを引き受けることができます。ロールには IAM アクセス許可、`aoss:APIAccessAll` および `aoss:DashboardsAccessAll` があり、`account-a` のデータアクセスポリシーに含まれている必要があります。

# を介したデータプレーンアクセス AWS PrivateLink
<a name="serverless-vpc"></a>

Amazon OpenSearch Serverless は、コントロールプレーンとデータプレーンオペレーションの 2 種類の AWS PrivateLink 接続をサポートしています。コントロールプレーンオペレーションには、コレクションの作成と削除、アクセスポリシーの管理が含まれます。データプレーンオペレーションは、コレクション内のデータのインデックス作成とクエリに使用します。このページでは、データプレーン VPC エンドポイントについて説明します。コントロールプレーン AWS PrivateLink エンドポイントの詳細については、「」を参照してください[を介したコントロールプレーンアクセス AWS PrivateLink](serverless-vpc-cp.md)。

を使用して AWS PrivateLink 、VPC と Amazon OpenSearch Serverless の間にプライベート接続を作成できます。インターネットゲートウェイ、NAT デバイス、VPN 接続、または Direct Connect 接続を使用せずに、VPC 内にあるかのように OpenSearch Serverless にアクセスできます。VPC のインスタンスは、パブリック IP アドレスがなくても OpenSearch Serverless にアクセスできます。VPC ネットワークアクセスの詳細については、「[Network connectivity patterns for Amazon OpenSearch Serverless](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)」を参照してください。

このプライベート接続を確立するには、 AWS PrivateLinkを利用したインターフェイスエンドポイントを作成します。インターフェイスエンドポイントに指定した各サブネットに、エンドポイントネットワークインターフェイスを作成します。これらは OpenSearch Serverless に送信されるトラフィックのエントリポイントとして機能する、リクエスタマネージド型のネットワークインターフェイスです。

詳細については「*AWS PrivateLink ガイド*」の「[Access AWS のサービス through AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)」を参照してください。

**Topics**
+ [コレクションエンドポイントの DNS 解決](#vpc-endpoint-dnc)
+ [VPC とネットワークアクセスポリシー](#vpc-endpoint-network)
+ [VPC とエンドポイントポリシー](#vpc-endpoint-policy)
+ [考慮事項](#vpc-endpoint-considerations)
+ [必要なアクセス許可](#serverless-vpc-permissions)
+ [OpenSearch Serverless のインターフェイスエンドポイントを作成する](#serverless-vpc-create)
+ [Amazon OpenSearch Serverless の共有 VPC の設定](#shared-vpc-setup)

## コレクションエンドポイントの DNS 解決
<a name="vpc-endpoint-dnc"></a>

OpenSearch Serverless コンソールを使用してデータプレーン VPC エンドポイントを作成すると、サービスは新しい Amazon Route 53 [プライベートホストゾーン](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)を作成し、VPC にアタッチします。このプライベートホストゾーンは、OpenSearch Serverless コレクション (`*.us-east-1.aoss.amazonaws.com`) のワイルドカード DNS レコードをエンドポイントに使用されるインターフェイスアドレスに解決するレコードで構成されます。VPC 内に OpenSearch Serverless の VPC エンドポイントが 1 つあれば、各  AWS リージョン のすべてのコレクションと Dashboards にアクセスできます。OpenSearch Serverless のエンドポイントを持つすべての VPC には、独自のプライベートホストゾーンがアタッチされています。

OpenSearch Serverless インターフェイスエンドポイントは、リージョン内のすべてのコレクションのパブリック Route 53 ワイルドカード DNS レコードも作成します。DNS 名は OpenSearch Serverless パブリック IP アドレスに解決されます。OpenSearch Serverless の VPC エンドポイントを持たない VPC 内のクライアント、またはパブリックネットワーク内のクライアントは、パブリック Route 53 リゾルバーを使用し、それらの IP アドレスを使用してコレクションと Dashboards にアクセスできます。VPC エンドポイントの IP アドレスタイプ (IPv4、IPv6、またはデュアルスタック) は、[OpenSearch Serverless のインターフェイスエンドポイントを作成する](#serverless-vpc-create)ときに提供されるサブネットに基づいて決定されます。

**注記**  
OpenSearch Serverless は、OpenSearch Service ドメイン解決用の追加の Amazon Route 53 プライベートホストゾーン (``<region>.opensearch.amazonaws.com``) を作成します。 AWS CLIの [update-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-vpc-endpoint.html) コマンドを使用して、既存の IPv4 VPC エンドポイントを Dualstack に更新できます。

特定の VPC の DNS リゾルバーアドレスは、VPC CIDR の 2 番目の IP アドレスです。VPC 内のクライアントは、そのリゾルバーを使用して、コレクション用の VPC エンドポイントアドレスを取得する必要があります。リゾルバーは、OpenSearch Serverless によって作成されたプライベートホストゾーンを使用します。任意のアカウントのすべてのコレクション用にそのリゾルバーを使用すれば十分です。一部のコレクションエンドポイントには VPC リゾルバーを使用し、他のコレクションエンドポイントにはパブリックリゾルバーを使用することもできますが、通常は必要ありません。

## VPC とネットワークアクセスポリシー
<a name="vpc-endpoint-network"></a>

コレクション用に OpenSearch API および Dashboards に対するネットワーク許可を付与するために、OpenSearch Serverless の[ネットワークアクセスポリシー](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)を使用できます。このネットワークアクセスは、VPC エンドポイントまたはパブリックインターネットのいずれからでも制御できます。ネットワークポリシーはトラフィックの許可のみを制御するため、コレクション内のデータとそのインデックスに対して操作するための許可を指定する[データアクセスポリシー](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html)も設定する必要があります。OpenSearch Serverless の VPC エンドポイントはサービスへのアクセスポイント、ネットワークアクセスポリシーはコレクションおよび Dashboards へのネットワークレベルのアクセスポイント、データアクセスポリシーはコレクション内のデータに対するあらゆる操作についてのきめ細かいアクセスコントロールのためのアクセスポイントとお考えください。

ネットワークポリシーでは複数の VPC エンドポイント ID を指定できるため、コレクションにアクセスする必要がある VPC ごとに VPC エンドポイントを作成することをお勧めします。これらの VPCsは、OpenSearch Serverless コレクションおよびネットワークポリシーを所有する AWS アカウントとは異なるアカウントに属することができます。あるアカウントの VPC-to-VPCピアリングまたはその他のプロキシソリューションを作成することはお勧めしません。これは、各 VPC が独自のエンドポイントを持つ場合よりも安全性とコスト効率が低くなります。最初の VPC は、ネットワークポリシーでその VPC のエンドポイントへのアクセスを設定した他の VPC の管理者には簡単に表示されません。

## VPC とエンドポイントポリシー
<a name="vpc-endpoint-policy"></a>

 Amazon OpenSearch Serverless は、VPC 用のエンドポイントポリシーをサポートします。エンドポイントポリシーは、VPC エンドポイントにアタッチして、エンドポイント AWS を使用して AWS サービスにアクセスできるプリンシパルを制御する IAM リソースベースのポリシーです。詳細については、「[エンドポイントポリシーを使用して VPC エンドポイントへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

エンドポイントポリシーを使用するには、まずインターフェイスエンドポイントを作成する必要があります。OpenSearch Serverless コンソールまたは OpenSearch Serverless API を使用して、インターフェイスエンドポイントを作成できます。インターフェイスエンドポイントを作成した後、エンドポイントポリシーをエンドポイントに追加する必要があります。詳細については、「[OpenSearch Serverless のインターフェイスエンドポイントを作成する](#serverless-vpc-create)」を参照してください。

**注記**  
OpenSearch Service コンソールでエンドポイントポリシーを直接定義することはできません。

エンドポイントポリシーは、設定済みの他の ID ベースポリシー、リソースベースポリシー、ネットワークポリシー、またはデータアクセスポリシーをオーバーライドしたり、これらに置き換わったりすることはありません。エンドポイントポリシーの更新の詳細については、「[エンドポイントポリシーを使用して VPC エンドポイントへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

デフォルトでは、エンドポイントポリシーにより、VPC エンドポイントに対するフルアクセスが付与されます。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

デフォルトの VPC エンドポイントポリシーにより、エンドポイントに対するフルアクセスが付与されますが、特定のロールおよびユーザーに対するアクセスを許可するように VPC エンドポイントポリシーを設定できます。これを実行するには、次の例を参照してください:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "123456789012",
                    "987654321098"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

VPC エンドポイントポリシーで、OpenSearch Serverless コレクションを条件要素として含めるように指定できます。これを実行するには、次の例を参照してください:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "coll-abc"
                    ]
                }
            }
        }
    ]
}
```

------

`aoss:CollectionId` のサポートがサポートされています。

```
Condition": {
         "StringEquals": {
               "aoss:CollectionId": "collection-id"
          }
}
```

VPC エンドポイントポリシーで SAML ID を使用して、VPC エンドポイントアクセスを決定できます。VPC エンドポイントポリシーのプリンシパルセクションではワイルドカード `(*)` を使用する必要があります。これを実行するには、次の例を参照してください:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        }
    ]
}
```

------

さらに、特定の SAML プリンシパルポリシーを含めるようにエンドポイントポリシーを設定できます。これを実行するには、次を参照してください:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalTag/Department": [
                        "Engineering"]
                    }
                }
            }
        ]
    }
```

------

Amazon OpenSearch Serverless での SAML 認証の使用の詳細については、「[Amazon OpenSearch Serverless での SAML 認証](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html)」を参照してください。

また、IAM ユーザーと SAML ユーザーを同じ VPC エンドポイントポリシーに含めることもできます。これを実行するには、次の例を参照してください:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

インターフェイス VPC エンドポイントを介して Amazon EC2 から Amazon OpenSearch Serverless コレクションにアクセスすることもできます。詳細については、「[Access an OpenSearch Serverless collection from Amazon EC2 (via interface VPC endpoints)](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)」を参照してください。

## 考慮事項
<a name="vpc-endpoint-considerations"></a>

OpenSearch Serverless のインターフェイスエンドポイントを設定する前に、次の点を考慮してください。
+ OpenSearch Serverless は、サポートされているすべての [OpenSearch API オペレーション](serverless-genref.md#serverless-operations) (設定 API オペレーションではない) をインターフェイスエンドポイント経由で呼び出すことをサポートしています。
+ OpenSearch Serverless のインターフェイスエンドポイントを作成したら、Serverless コレクションにアクセスできるようにするために、そのエンドポイントを[ネットワークアクセスポリシー](serverless-network.md)に含める必要があります。
+ デフォルトでは、インターフェイスエンドポイント経由で OpenSearch Serverless へのフルアクセスが許可されます。セキュリティグループをエンドポイントのネットワークインターフェイスに関連付けて、インターフェイスエンドポイント経由で OpenSearch Serverless へのトラフィックを制御できます。
+ 1 つの に最大 50 個の OpenSearch Serverless VPC エンドポイント AWS アカウント を設定できます。
+ ネットワークポリシーでコレクションの API またはダッシュボードへのパブリックインターネットアクセスを有効にすると、コレクションには任意の VPC およびパブリックインターネットからアクセスできます。
+ オンプレミスで VPC の外部にいる場合、OpenSearch Serverless の VPC エンドポイント解決に DNS リゾルバーを直接使用することはできません。VPN アクセスが必要な場合、VPC には外部クライアントが使用できる DNS プロキシリゾルバーが必要です。Route 53 は、オンプレミスネットワークまたは別の VPC から VPC への DNS クエリを解決するために使用できるインバウンドエンドポイントオプションを提供します。
+ OpenSearch Serverless が作成して VPC にアタッチするプライベートホストゾーンは、 サービスによって管理されますが、 Amazon Route 53 リソースに表示され、アカウントに請求されます。
+ その他の考慮事項については、「*AWS PrivateLink ガイド*」の「[Considerations](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)」を参照してください。

## 必要なアクセス許可
<a name="serverless-vpc-permissions"></a>

OpenSearch Serverless の VPC アクセスでは、次の AWS Identity and Access Management (IAM) アクセス許可を使用します。IAM 条件を指定して、ユーザーを特定のコレクションに制限できます。
+ `aoss:CreateVpcEndpoint` – VPC エンドポイントを作成します。
+ `aoss:ListVpcEndpoints` – すべての VPC エンドポイントを一覧表示します。
+ `aoss:BatchGetVpcEndpoint` – VPC エンドポイントのサブセットに関する詳細を参照してください。
+ `aoss:UpdateVpcEndpoint` – VPC エンドポイントを変更します。
+ `aoss:DeleteVpcEndpoint` – VPC エンドポイントを削除します。

さらに、VPC エンドポイントを作成するには、以下の Amazon EC2 許可と Route 53 許可が必要です。
+ `ec2:CreateTags`
+ `ec2:CreateVpcEndpoint`
+ `ec2:DeleteVpcEndPoints`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:DescribeVpcs`
+ `ec2:ModifyVpcEndPoint`
+ `route53:AssociateVPCWithHostedZone`
+ `route53:ChangeResourceRecordSets`
+ `route53:CreateHostedZone`
+ `route53:DeleteHostedZone`
+ `route53:GetChange`
+ `route53:GetHostedZone`
+ `route53:ListHostedZonesByName`
+ `route53:ListHostedZonesByVPC`
+ `route53:ListResourceRecordSets`

## OpenSearch Serverless のインターフェイスエンドポイントを作成する
<a name="serverless-vpc-create"></a>

コンソールまたは OpenSearch Serverless API を使用して、OpenSearch Serverless のインターフェイスエンドポイントを作成できます。

**OpenSearch Serverless コレクションのインターフェイスエンドポイントを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで **[Serverless]** (サーバーレス) を展開し、**[VPC endpoints]** (VPC エンドポイント) を選択します。

1. **[Create VPC endpoint]** (VPC エンドポイントの作成) を選択します。

1. エンドポイントの名前を入力します。

1. **[VPC]** で OpenSearch Serverless にアクセスする VPC を選択します。

1. **[Subnet]** (サブネット) で、OpenSearch Serverless にアクセスするサブネットを 1 つ選択します。
   + エンドポイントの IP アドレスと DNS タイプはサブネットタイプに基づいています
     + Dualstack: すべてのサブネットに IPv4 と IPv6 の両方のアドレス範囲がある場合
     + IPv6: すべてのサブネットが IPv6 のみのサブネットの場合
     + IPv4: すべてのサブネットに IPv4 アドレス範囲がある場合

1. **[Security groups]** (セキュリティグループ) で、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。これは、エンドポイントに承認するインバウンドトラフィックのポート、プロトコル、ソースを制限する重要なステップです。OpenSearch Serverless との通信に VPC エンドポイントを使用するリソースがエンドポイントのネットワークインターフェイスと通信できるように、セキュリティグループルールが設定されていることを確認します。

1. **エンドポイントの作成** を選択します。

OpenSearch Serverless API を使用して VPC エンドポイントを作成する場合は、`CreateVpcEndpoint` コマンドを使用します。

**注記**  
エンドポイントを作成したら、その ID を書き留めます (例: `vpce-abc123def4EXAMPLE`)。コレクションへのエンドポイントアクセスを提供するには、この ID を 1 つまたは複数のネットワークアクセスポリシーに含める必要があります。

インターフェイスエンドポイントを作成したら、ネットワークアクセスポリシーを使用して、そのエンドポイントにコレクションへのアクセスを提供する必要があります。詳細については、「[Amazon OpenSearch Serverless でのネットワークアクセス](serverless-network.md)」を参照してください。

## Amazon OpenSearch Serverless の共有 VPC の設定
<a name="shared-vpc-setup"></a>

Amazon Virtual Private Cloud (VPC) を使用して、VPC サブネットを組織 AWS アカウント 内の他の と共有したり、複数の のリソース間で VPN などのネットワークインフラストラクチャを共有したりできます AWS アカウント。

現在、Amazon OpenSearch Serverless は、 AWS PrivateLink VPC の所有者でない限り、共有 VPC への接続の作成をサポートしていません。 AWS PrivateLink また、 は、その VPC 間の接続の共有もサポートしていません AWS アカウント。

ただし、OpenSearch Serverless の柔軟なモジュール式のアーキテクチャに基づいて、共有 VPC をセットアップすることはできます。これは、OpenSearch Serverless ネットワークインフラストラクチャが個々のコレクション (OpenSearch Service) インフラストラクチャとは異なるためです。したがって、VPC が配置されている 1 つのアカウントの AWS PrivateLink VPCe エンドポイントを作成し、他のアカウントのネットワークポリシーで VPCe ID を使用して、トラフィックをその共有 VPC からのみに制限できます。

以下の手順では、*所有者アカウント*と*コンシューマーアカウント*について説明します。

所有者アカウントは、VPC をセットアップして他のアカウントと共有するための共通のネットワークアカウントとして機能します。コンシューマーアカウントは、所有者アカウントによって共有されている VPC で OpenSearch Serverless コレクションを作成および維持するアカウントです。

**前提条件**  
共有 VPC を設定する前に、以下の要件が満たされていることを確認してください。
+ 目的の所有者アカウントは、Amazon Virtual Private Cloud で VPC、サブネット、ルートテーブル、およびその他の必要なリソースを既に設定している必要があります。詳細については、[Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/)を参照してください。
+ 目的の所有者アカウントとコンシューマーアカウントは、 AWS Organizationsの同じ組織に属している必要があります。詳細については、「*[AWS Organizations ユーザーガイド](https://docs.aws.amazon.com/organizations/latest/userguide/)*」を参照してください。

**所有者アカウント/共通ネットワークアカウントで共有 VPC を設定するには。**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

1. 「[OpenSearch Serverless のインターフェイスエンドポイントを作成する](#serverless-vpc-create)」のステップを実行してください。その際、以下の選択を行います。
   + 組織内のコンシューマーアカウントと共有されている VPC とサブネットを選択します。

1. エンドポイントを作成したら、生成された VPCe ID を書き留めて、コンシューマーアカウントでセットアップタスクを実行する管理者に渡します。

   VPCe ID は `vpce-abc123def4EXAMPLE` 形式になっています。

**コンシューマーアカウントで共有 VPC を設定するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

1. コレクションがまだない場合は、[Amazon OpenSearch Serverless コレクションの管理](serverless-manage.md) の情報を使用してコレクションを作成します。

1. [ネットワークポリシーの作成 (コンソール)](serverless-network.md#serverless-network-console) の情報を使用して、ネットワークポリシーを作成します。その際、以下の選択を行います。
**注記**  
この目的のために、既存のネットワークポリシーを更新することもできます。

   1. **[アクセスタイプ]** に **[VPC (推奨)]** を選択します。

   1. **[アクセス用の VPC エンドポイント]** の場合は、所有者アカウントから提供された VPCe ID (`vpce-abc123def4EXAMPLE` 形式) を選択します。

   1. **[リソースタイプ]** エリアで、以下を実行します。
      + **[OpenSearch エンドポイントへのアクセスを有効にする]** ボックスを選択し、その共有 VPC からのアクセスを有効にするのに使用するコレクション名またはコレクションパターンを選択します。
      + **[OpenSearch Dashboard へのアクセスを有効にする]** ボックスを選択し、その共有 VPC からのアクセスを有効にするのに使用するコレクション名またはコレクションパターンを選択します。

1. 新しいポリシーの場合は、**[作成]** を選択します。既存のポリシーの場合は、**[更新]** を選択します。

# を介したコントロールプレーンアクセス AWS PrivateLink
<a name="serverless-vpc-cp"></a>

Amazon OpenSearch Serverless は、コントロールプレーンとデータプレーンオペレーションの 2 種類の AWS PrivateLink 接続をサポートしています。コントロールプレーンオペレーションには、コレクションの作成と削除、アクセスポリシーの管理が含まれます。データプレーンオペレーションは、コレクション内のデータのインデックス作成とクエリに使用します。このページでは、コントロールプレーン AWS PrivateLink エンドポイントについて説明します。データプレーン VPC エンドポイントの詳細については、「」を参照してください[を介したデータプレーンアクセス AWS PrivateLink](serverless-vpc.md)。

## コントロールプレーン AWS PrivateLink エンドポイントの作成
<a name="serverless-vpc-privatelink"></a>

インターフェイス VPC エンドポイントを使用するように OpenSearch Serverless を設定することで、VPC のセキュリティ体制を改善できます。インターフェイスエンドポイントは AWS PrivateLink を利用しています。このテクノロジーにより、インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続なしで、OpenSearch Serverless APIs にプライベートにアクセスできます。

 AWS PrivateLink と VPC エンドポイントの詳細については、「Amazon [VPC ユーザーガイド」の「VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)」を参照してください。

### 考慮事項
<a name="serverless-vpc-cp-considerations"></a>
+ VPC エンドポイントは、同じリージョン内でのみサポートされます。
+ VPC エンドポイントでは、Amazon Route 53 を介して Amazon 提供の DNS のみがサポートされています。
+ VPC エンドポイントは、OpenSearch Serverless コレクション、ポリシー、および VpcEndpoints へのアクセスを制御するエンドポイントポリシーをサポートします。
+ OpenSearch Serverless はインターフェイスエンドポイントのみをサポートします。ゲートウェイエンドポイントはサポートされていません。

### VPC エンドポイントの作成
<a name="serverless-vpc-cp-create"></a>

Amazon OpenSearch Serverless のコントロールプレーン VPC エンドポイントを作成するには、「Amazon VPC *デベロッパーガイド*」の[「インターフェイス VPC エンドポイントを使用して AWS サービスにアクセスする](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)」の手順を使用します。次のエンドポイントを作成します。
+ `com.amazonaws.region.aoss`

**コンソールを使用してコントロールプレーン VPC エンドポイントを作成するには**

1. Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。

1. ナビゲーションペインで、**[Endpoints]** (エンドポイント) を選択します。

1. [**エンドポイントの作成**] を選択します。

1. **[サービスカテゴリ]** で、**[AWS のサービス]** を選択します。

1. **サービス** で、 を選択します`com.amazonaws.region.aoss`。例えば、`com.amazonaws.us-east-1.aoss`。

1. **[VPC]** で、エンドポイントを作成する VPC を選択します。

1. [**サブネット**] で、エンドポイントネットワークインターフェイスを作成する先のサブネット (アベイラビリティーゾーン) を選択します。

1. **セキュリティグループ**で、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。HTTPS (ポート 443) が許可されていることを確認します。

1. **ポリシー** では、**フルアクセス**を選択してすべてのオペレーションを許可するか、**カスタム**を選択してカスタムポリシーをアタッチします。

1. **エンドポイントの作成** を選択します。

### エンドポイントポリシーの作成
<a name="serverless-vpc-cp-endpoint-policy"></a>

Amazon OpenSearch Serverless へのアクセスを制御するエンドポイントポリシーを VPC エンドポイントにアタッチできます。このポリシーでは、以下の情報を指定します。
+ アクションを実行できるプリンシパル。
+ 実行可能なアクション。
+ アクションを実行できるリソース。

詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC エンドポイントでサービスへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

**Example OpenSearch Serverless の VPC エンドポイントポリシー**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": [  
        "aoss:ListCollections",  
        "aoss:BatchGetCollection"  
      ],  
      "Resource": "*"  
    }  
  ]  
}
```

**Example リストオペレーションのみを許可する制限ポリシー**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": "aoss:ListCollections",  
      "Resource": "*"  
    }  
  ]  
}
```

# Amazon OpenSearch Serverless での SAML 認証
<a name="serverless-saml"></a>

Amazon OpenSearch Serverless で SAML 認証を使用すると、Serverless コレクションの OpenSearch Dashboards エンドポイントに対し、既存の ID プロバイダーによるシングルサインオン (SSO) を提供できます。

SAML 認証により、ユーザーはサードパーティの ID プロバイダーを使用して OpenSearch Dashboards にサインインし、データのインデックス化と検索を行えます。OpenSearch Serverless では、IAM Identity Center、Okta、Keycloak、Active Directory Federation Services (AD FS)、Auth0 など、SAML 2.0 標準を使用するプロバイダーをサポートしています。Okta、OneLogin 、Microsoft Entra ID などの他の ID ソースからのユーザーとグループを同期するように IAM Identity Center を設定できます。IAM Identity Center でサポートされている ID ソースのリストと設定手順については、「*IAM Identity Center ユーザーガイド*」の「[Getting started tutorials](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)」を参照してください。

**注記**  
SAML 認証は、ウェブブラウザから OpenSearch Dashboards にアクセスする場合のみに使用します。この認証を受けたユーザーは、OpenSearch Dashboards の **[Dev Tools]** (開発ツール) を通じてのみ、OpenSearch API オペレーションにリクエストを行うことができます。ユーザーが、SAML 認証情報により、OpenSearch API オペレーションに直接 HTTP リクエストを発行することは*できません*。

SAML 認証の使用を開始するには、まず SAML の ID プロバイダー (IdP) を設定します。次に、その IdP から 1 人以上のユーザーを、[データアクセスポリシー](serverless-data-access.md)に含めます。このポリシーにより、コレクションやインデックスに対する特定のアクセス許可が付与されす。その後、ユーザーは、OpenSearch Dashboards にサインインして、データアクセスポリシーで許可されているアクションを実行できます。

![\[SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-saml-flow.png)


**Topics**
+ [考慮事項](#serverless-saml-considerations)
+ [必要なアクセス許可](#serverless-saml-permissions)
+ [SAML プロバイダーの作成 (コンソール)](#serverless-saml-creating)
+ [OpenSearch Dashboards へのアクセス](#serverless-saml-dashboards)
+ [SAML ID に対するコレクションデータへのアクセス権の付与](#serverless-saml-policies)
+ [SAML プロバイダの作成 (AWS CLI)](#serverless-saml-creating-api)
+ [SAML プロバイダーの表示](#serverless-saml-viewing)
+ [SAML プロバイダの更新](#serverless-saml-updating)
+ [SAML プロバイダーの削除](#serverless-saml-deleting)

## 考慮事項
<a name="serverless-saml-considerations"></a>

SAML 認証を設定する際には、以下を考慮します。
+ 署名済みおよび暗号化されたリクエストはサポートされていません。
+ 暗号化されたアサーションはサポートされていません。
+ 認証とサインアウトを IdP が開始することはサポートされていません。
+ サービスコントロールポリシー (SCP) は、IAM 以外の ID (Amazon OpenSearch Serverless & SAML における SAML、あるいは Amazon OpenSearch Service の 基本的な内部ユーザー許可など) の場合には適用または評価されません。

## 必要なアクセス許可
<a name="serverless-saml-permissions"></a>

OpenSearch Serverless の SAML 認証では、次の AWS Identity and Access Management (IAM) アクセス許可を使用します。
+ `aoss:CreateSecurityConfig` – SAML プロバイダーを作成します。
+ `aoss:ListSecurityConfig` – 現在のアカウントのすべての SAM Lプロバイダーを一覧表示します。
+ `aoss:GetSecurityConfig` – SAML プロバイダーの情報を表示します。
+ `aoss:UpdateSecurityConfig` – 特定の SAML プロバイダーの (XML メタデータを含む) 設定を変更します。
+ `aoss:DeleteSecurityConfig` – SAML プロバイダーを削除します。

次の ID ベースのアクセスポリシーでは、すべての IdP 設定を管理することを、ユーザーに対し許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

`Resource` 要素はワイルドカードにする必要がある点に、注意してください。

## SAML プロバイダーの作成 (コンソール)
<a name="serverless-saml-creating"></a>

以下の手順では、SAML プロバイダーを作成する方法について説明します。この手順により、SAML 認証がサービスプロバイダー (SP) を使用して、OpenSearch Dashboards に対する認証を開始できるようになります。認証を IdP が開始することはサポートされていません。

**OpenSearch Dashboards の SAML 認証を有効にするには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールにサインインします。

1. 左側のナビゲーションパネルで **[Serverless]** (サーバーレス) を展開し、**[SAML authentication]** (SAML 認証) を選択します。

1. **[Add SAML provider]** (SAML プロバイダーを追加) を選択します。

1. プロバイダーの名前と説明を入力します。
**注記**  
ここで指定した名前はパブリックにアクセス可能で、OpenSearch Dashboards にサインインしたユーザーは、ドロップダウンメニューに表示することができます。名前は認識しやすく、また、ID プロバイダーに関する機密情報が明らかにならないものにしてください。

1. **[Configure your IdP]** (IDP の設定) で、アサーションコンシューマーサービス (ACS) のURL をコピーします。

1. ここでコピーした ACS URL は、ID プロバイダーを設定するために使用します。用語と手順はプロバイダーによって異なります。プロバイダーのドキュメントを参照してください。

   例えば、Okta では「SAML 2.0 ウェブアプリケーション」を作成し、ACS URL を、**[Single Sign On URL]** (シングルサインオン URL)、**[Recipient URL]** (受信者 URL)、**[Destination URL]** (送信先 URL) として指定します。Auth0 の場合は、この情報を **[Allowed Callback URLs]** (許可するコールバック URL) の中で指定します。

1. IdP にオーディエンス制限用のフィールドがある場合は、オーディエンス制限を設定します。オーディエンス制限は SAML アサーション内の値であり、これによりアサーションの対象者を指定します。OpenSearch Serverless では、以下を実行できます。次のコード例の*コンテンツを*独自の AWS アカウント ID に置き換えてください。

   1. デフォルトのオーディエンス制限 `:opensearch:111122223333` を使用します。

   1. (オプション) AWS CLIを使用して、カスタムオーディエンス制限を設定します。詳細については、「[SAML プロバイダの作成 (AWS CLI)](#serverless-saml-creating-api)」を参照してください。

   オーディエンス制限フィールドの名前は、プロバイダーによって異なります。Okta の場合は、**[Audience URI (SP Entity ID)]** (オーディエンス URI (SP エンティティ ID)) です。IAM ID センターでは、**[Application SAML audience]** (アプリケーション SAML オーディエンス) になります。

1. IAM ID センターを使用している場合は、[属性マッピング](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html) (`unspecified` の形式を使用する `Subject=${user:name}`) も指定する必要があります。

1. ID プロバイダーを設定すると、IdP メタデータファイルが生成されます。この XML ファイルには、TLS 証明書、Single Sign-On エンドポイント、ID プロバイダーのエンティティ ID など、プロバイダーに関する情報が含まれています。

   IdP メタデータファイル内のテキストをコピーして、**[Provide metadata from your IdP]** (IdP からメタデータを提供) フィールドに貼り付けます。または、[**XML ファイルからインポート**] を選択し、ファイルをアップロードします。メタデータファイルは、次のように表示されます。

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <md:EntityDescriptor entityID="entity-id" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
     <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
       <md:KeyDescriptor use="signing">
         <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
           <ds:X509Data>
             <ds:X509Certificate>tls-certificate</ds:X509Certificate>
           </ds:X509Data>
         </ds:KeyInfo>s
       </md:KeyDescriptor>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="idp-sso-url"/>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="idp-sso-url"/>
     </md:IDPSSODescriptor>
   </md:EntityDescriptor>
   ```

1. ユーザーネームに対する SAML アサーションの `NameID` 要素を使用するために、**[Custom user ID attribute]** (カスタムユーザー ID 属性) フィールドは空のままにしておきます。アサーションでこの標準エレメントを使用せず、代わりにユーザーネームをカスタム属性として含める場合は、ここでその属性を指定します。属性では、大文字と小文字が区別されます。シングルユーザー属性のみがサポートされています。

   次の例では、SAML アサーション内の、`NameID` に対するオーバーライド属性を示しています。

   ```
   <saml2:Attribute Name="UserId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
     <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:type="xs:string">annie</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. (オプション) **[Group attribute]** (グループ属性) フィールドで、カスタム属性 (`role` または `group`など) を指定します。グループ属性は、 1 つだけがサポートされます。グループ属性には、デフォルト値はありません。これを指定しない場合、データアクセスポリシーにはユーザープリンシパルのみが含まれます。

   次に、SAML アサーションのグループ属性での例を示します。

   ```
   <saml2:Attribute Name="department" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
       <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:type="xs:string">finance</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. OpenSearch Dashboards のデフォルトでは、 24 時間を経過したユーザーはログアウトされます。**[OpenSearch Dashboards のタイムアウト]** を指定することで、この値を 1～12 時間 (15～720 分) の任意の数値に設定することができます。タイムアウトを 15 分以下に設定しようとすると、セッションは 1 時間にリセットされます。

1. **[Create SAML provider]** (SAML プロバイダーを作成) を選択します。

## OpenSearch Dashboards へのアクセス
<a name="serverless-saml-dashboards"></a>

SAML プロバイダーを設定すると、そのプロバイダーに関連付けられたすべてのユーザーとグループは、OpenSearch Dashboards エンドポイントを使用できるようになります。Dashboards URL は、*すべてのコレクション*で `collection-endpoint/_dashboards/` の形式になっています。

SAML が有効になっている場合、 のリンクを選択すると IdP 選択ページ AWS マネジメントコンソール に移動し、SAML 認証情報を使用してサインインできます。まず、ドロップダウンから ID プロバイダーを選択します。

![\[OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/idpList.png)


次に、自分の IdP 認証情報を使用してサインインします。

SAML が有効になっていない場合、 のリンクを選択すると、SAML のオプションなしで IAM ユーザーまたはロールとしてログインするように AWS マネジメントコンソール 指示されます。

## SAML ID に対するコレクションデータへのアクセス権の付与
<a name="serverless-saml-policies"></a>

SAML プロバイダーを作成した後も、基盤となるユーザーとグループに対して、コレクション内のデータへのアクセス権を付与する必要があります。アクセス権は、[データアクセスポリシー](serverless-data-access.md)を介して付与します。アクセスが付与されるまで、ユーザーはコレクション内のデータの読み取り、書き込み、削除を行うことはできません。

アクセスを許可するには、データアクセスポリシーを作成し、`Principal` ステートメントの中で、SAML ユーザーおよび/またはグループ ID を指定します。

```
[
   {
      "Rules":[
       ...  
      ],
      "Principal":[
         "saml/987654321098/myprovider/user/Shaheen",
         "saml/987654321098/myprovider/group/finance"
      ]
   }
]
```

アクセス権は、コレクション、インデックス、またはその両方に付与できます。ユーザーごとに異なる権限を持たせたい場合は、複数のルールを作成します。使用可能な許可のリストについては、「[Supported policy permissions](serverless-data-access.md#serverless-data-supported-permissions)」(サポートされるポリシーの許可) を参照してください。アクセスポリシーの形式の詳細については、「[Policy syntax](serverless-data-access.md)」(ポリシーの構文) を参照してください。

## SAML プロバイダの作成 (AWS CLI)
<a name="serverless-saml-creating-api"></a>

OpenSearch Serverless API を使用して SAML プロバイダーを作成するには、[CreateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html) リクエストを送信します。

```
aws opensearchserverless create-security-config \
    --name myprovider \
    --type saml \
    --saml-options file://saml-auth0.json
```

.json ファイル内のキーと値のマップとして (メタデータ XML を含めながら) `saml-options` を指定します。メタデータ XML は、[JSON エスケープ文字列](https://www.freeformatter.com/json-escape.html)としてエンコードする必要があります。

```
{
   "sessionTimeout": 70,
   "groupAttribute": "department",
   "userAttribute": "userid",
   "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
   "metadata": "EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor\r\n\/EntityDescriptor"
}
```

**注記**  
(オプション) AWS CLIを使用して、カスタムオーディエンス制限を設定します。詳細については、「[SAML プロバイダの作成 (AWS CLI)](#serverless-saml-creating-api)」を参照してください。

## SAML プロバイダーの表示
<a name="serverless-saml-viewing"></a>

次の [ListSecurityConfigs](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityConfigs.html) リクエストは、アカウント内のすべての SAML プロバイダーを一覧表示します。

```
aws opensearchserverless list-security-configs --type saml
```

このリクエストでは、既存のすべての SAML プロバイダーに関する (ID プロバイダーが生成する完全な IdP メタデータを含む) 情報を返します。

```
{
   "securityConfigDetails": [ 
      { 
         "configVersion": "MTY2NDA1MjY4NDQ5M18x",
         "createdDate": 1664054180858,
         "description": "Example SAML provider",
         "id": "saml/111122223333/myprovider",
         "lastModifiedDate": 1664054180858,
         "samlOptions": { 
            "groupAttribute": "department",
            "metadata": "EntityDescriptorxmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ...... ...IDPSSODescriptor\r\n/EntityDescriptor",
            "sessionTimeout": 120,
            "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
            "userAttribute": "userid"
         }
      }
   ]
}
```

将来の更新ににおける `configVersion` を含め、特定のプロバイダの詳細を表示するには、`GetSecurityConfig` リクエストを送信します。

## SAML プロバイダの更新
<a name="serverless-saml-updating"></a>

OpenSearch Serverless コンソールを使用して SAML プロバイダーを更新するには、**[SAML authentication]** (SAML 認証) を選択し、ID プロバイダーを選択した後に、**[Edit]** (編集) を選択します。メタデータやカスタム属性を含め、すべてのフィールドを変更可能です。

OpenSearch Serverless API を使用してプロバイダーを更新するには、更新するポリシーの識別子を指定しながら、[UpdateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityConfig.html) リクエストを送信します。また、設定のバージョン (`ListSecurityConfigs` または `GetSecurityConfig` コマンドで取得可能) も含める必要があります。最新バージョンを含めると、他のユーザーが行った変更を不注意に上書きしてしまうことを防げます。

次のリクエストは、プロバイダーの SAML オプションを更新します。

```
aws opensearchserverless update-security-config \
    --id saml/123456789012/myprovider \
    --type saml \
    --saml-options file://saml-auth0.json \
    --config-version MTY2NDA1MjY4NDQ5M18x
```

SAML 設定オプションは、.json ファイル内のキーと値のマップとして指定します。

**重要**  
**SAML オプションの更新を段階的に実行することは*できません***。更新時に、`SAMLOptions` オブジェクト内でパラメータの値を指定しない場合、既存の値は空の値で上書きされます。例えば、現在の構成で `userAttribute` に値が指定されていて、この値を含めずに更新を行った場合、その値は構成から削除されます。`GetSecurityConfig` オペレーション呼び出しにより更新を実行する前に、既存の値が何であるかを確認してください。

## SAML プロバイダーの削除
<a name="serverless-saml-deleting"></a>

SAML プロバイダーを削除した場合、データアクセスポリシー内で関連付けられたユーザーやグループへの参照は、以後、機能しなくなります。混乱を避けるため、エンドポイントを削除する前に、アクセスポリシー内で (指定している) エンドポイントへの参照を、すべて削除することをお勧めします。

OpenSearch Serverless コンソールを使用して SAML プロバイダーを削除するには、**[Authentication]** (認証) を選択し、プロバイダーを選択した後に、**[Delete]** (削除) を選択します。

OpenSearch サーバーServerless API を使用してプロバイダーを削除するには、[DeleteSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityConfig.html) リクエストを送信します。

```
aws opensearchserverless delete-security-config --id saml/123456789012/myprovider
```

# Amazon OpenSearch Serverless のコンプライアンス検証
<a name="serverless-compliance-validation"></a>

サードパーティーの監査者は、さまざまな AWS コンプライアンスプログラムの一環として Amazon OpenSearch Serverless のセキュリティとコンプライアンスを評価します。このプログラムには、SOC、PCI、HIPAA が含まれます。

 AWS のサービス が特定のコンプライアンスプログラムの範囲内にあるかどうかを確認するには、[AWS のサービス 「コンプライアンスプログラムによるスコープ](https://aws.amazon.com/compliance/services-in-scope/)」の「コンプライアンス」を参照して、関心のあるコンプライアンスプログラムを選択します。一般的な情報については、[AWS 「コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)」を参照してください。

を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細については、[「Downloading Reports in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)」を参照してください。

を使用する際のお客様のコンプライアンス責任 AWS のサービス は、お客様のデータの機密性、貴社のコンプライアンス目的、適用可能な法律および規制によって決まります。を使用する際のコンプライアンス責任の詳細については AWS のサービス、[AWS 「 セキュリティドキュメント](https://docs.aws.amazon.com/security/)」を参照してください。