

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

# OpenSearch UI アプリケーションのネットワークアクセスコントロール設定リファレンス
<a name="application-network-access-reference"></a>

以下のセクションでは、OpenSearch UI がサポートする各ネットワークアクセスコントロールのポリシー例を示します。各例には、適用する AWS Command Line Interface (AWS CLI) コマンドが含まれています。OpenSearch UI がこれらのポリシーを評価する方法の説明と、最も一般的なタスクのステップバイステップのチュートリアルについては、「」を参照してください[OpenSearch UI アプリケーションへのネットワークアクセスの制限](application-network-access.md)。

保護するスコープとユーザーが接続するネットワークパスに基づいて例を選択します。


| スコープ | コントロール | ログインページをブロックします | 
| --- | --- | --- | 
| 単一のプリンシパル | ID ベースのポリシー | いいえ | 
| 単一の VPC エンドポイント | VPC エンドポイントポリシー | いいえ | 
| 組織内のすべてのアカウント | リソースコントロールポリシー (RCP) | はい | 

**注記**  
認証前にネットワーク外のユーザーを`opensearch:ViewLoginPage`ブロックすることを拒否するリソースコントロールポリシーのみ。アイデンティティベースのエンドポイントポリシーと VPC エンドポイントポリシーは、ユーザーがサインインした後に適用されます。

**Topics**
+ [プリンシパルを VPC エンドポイントに制限する](#application-network-access-identity-vpce)
+ [プリンシパルを IP アドレス範囲に制限する](#application-network-access-identity-ip)
+ [VPC エンドポイントポリシーによるアクセスの制限](#application-network-access-endpoint-policy)
+ [組織全体での VPC エンドポイントアクセスの強制](#application-network-access-rcp-vpce)
+ [組織全体での VPC アクセスの強制](#application-network-access-rcp-vpc)
+ [組織全体での IP アドレス範囲アクセスの強制](#application-network-access-rcp-ip)

## プリンシパルを VPC エンドポイントに制限する
<a name="application-network-access-identity-vpce"></a>

次のアイデンティティベースのポリシーは、リクエストが指定されたインターフェイス VPC エンドポイント経由で到着しない限り、OpenSearch UI アプリケーションへのユーザーまたはロールのアクセスを拒否します。アプリケーションにアクセスする IAM プリンシパルにアタッチします。{{プレースホルダー値を}}独自の VPC エンドポイント ID に置き換えます。

**プリンシパルを VPC エンドポイントに制限するには**

1. 次のポリシーを という名前のローカルファイルに保存します`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideVpce",
               "Effect": "Deny",
               "Action": "opensearch:ApplicationAccessAll",
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "StringNotEqualsIfExists": {
                       "aws:SourceVpce": "{{vpc-endpoint-id}}"
                   }
               }
           }
       ]
   }
   ```

1. IAM ポリシーを作成します。

   ```
   aws iam create-policy \
     --policy-name {{DenyOpenSearchUIOutsideVpce}} \
     --description "{{Denies OpenSearch UI access outside the approved VPC endpoint}}" \
     --policy-document file://policy.json
   ```

   レスポンスにはポリシー ARN が含まれます。次のステップでは、この値を書き留めます。

1. アプリケーションにアクセスする IAM ロールまたはユーザーにポリシーをアタッチします。

   ```
   aws iam attach-role-policy \
     --role-name {{OpenSearchUIUserRole}} \
     --policy-arn {{arn:aws:iam::111122223333:policy/DenyOpenSearchUIOutsideVpce}}
   ```

ポリシーが有効になると、プリンシパルは承認された VPC エンドポイントの外部からアプリケーションにアクセスするときに`403 forbidden`レスポンスを受け取ります。エンドポイントを介したアクセスは正常に機能します。

## プリンシパルを IP アドレス範囲に制限する
<a name="application-network-access-identity-ip"></a>

次のアイデンティティベースのポリシーは、企業ネットワークのパブリックエグレス範囲など、承認された IP アドレス範囲からリクエストが送信されない限り、アクセスを拒否します。{{プレースホルダー値を}} CIDR 表記の独自の IP アドレス範囲に置き換えます。

**プリンシパルを IP アドレス範囲に制限するには**

1. 次のポリシーを という名前のローカルファイルに保存します`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideCorpNetwork",
               "Effect": "Deny",
               "Action": "opensearch:ApplicationAccessAll",
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "NotIpAddress": {
                       "aws:SourceIp": [
                           "{{203.0.113.0/24}}",
                           "{{198.51.100.0/24}}"
                       ]
                   }
               }
           }
       ]
   }
   ```

1. IAM ポリシーを作成します。

   ```
   aws iam create-policy \
     --policy-name {{DenyOpenSearchUIExternalAccess}} \
     --description "{{Denies OpenSearch UI access from outside corporate IP ranges}}" \
     --policy-document file://policy.json
   ```

1. アプリケーションにアクセスする IAM ロールまたはユーザーにポリシーをアタッチします。

   ```
   aws iam attach-role-policy \
     --role-name {{OpenSearchUIUserRole}} \
     --policy-arn {{arn:aws:iam::111122223333:policy/DenyOpenSearchUIExternalAccess}}
   ```

**注記**  
リクエストが VPC エンドポイント経由で到着すると、 `aws:SourceIp` は存在しません。プライベート (VPC エンドポイント) とパブリック (IP 制限付き) の両方のアクセスパスを使用する場合は、ポリシーで両方の条件キーを考慮し、正当な VPC エンドポイントトラフィックを意図せずに拒否しないようにします。

## VPC エンドポイントポリシーによるアクセスの制限
<a name="application-network-access-endpoint-policy"></a>

アイデンティティベースのポリシーは、特定のプリンシパルを管理します。接続するプリンシパルに関係なく、ユーザーが VPC エンドポイント*経由で*アクセスできるアプリケーションを制御するには、インターフェイス VPC エンドポイント自体にポリシーをアタッチします。次のエンドポイントポリシーでは、特定のアプリケーションへのアクセスのみを許可します。{{プレースホルダーの値を}}独自の AWS リージョン、アカウント ID、アプリケーション ID に置き換えます。

**VPC エンドポイントポリシーを使用してアクセスを制限するには**

1. 次のポリシーを という名前のローカルファイルに保存します`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "AllowOpenSearchUIApplication",
               "Effect": "Allow",
               "Principal": "*",
               "Action": "opensearch:ApplicationAccessAll",
               "Resource": "arn:aws:opensearch:{{region}}:{{account-id}}:application/{{application-id}}"
           }
       ]
   }
   ```

1. ポリシーをインターフェイス VPC エンドポイントに適用します。

   ```
   aws ec2 modify-vpc-endpoint \
     --vpc-endpoint-id {{vpce-1a2b3c4d5e6f7g8h9}} \
     --policy-document file://policy.json
   ```

OpenSearch UI の VPC エンドポイントポリシーの詳細については、「」を参照してください[VPC エンドポイントからの OpenSearch UI へのアクセスの管理](application-access-ui-from-vpc-endpoint.md)。

## 組織全体での VPC エンドポイントアクセスの強制
<a name="application-network-access-rcp-vpce"></a>

ID ベースのポリシーは特定のプリンシパルを制限し、VPC エンドポイントポリシーは特定のエンドポイントを制限します。組織内のすべてのアカウントでネットワークアクセスを統一し、認証*前に*ネットワーク外のユーザーをブロックするには、リソースコントロールポリシー (RCP) を AWS 組織にアタッチします。

次のリソースコントロールポリシーは、リクエストが指定された VPC エンドポイント経由で到着しない限り、組織内の OpenSearch UI アプリケーションへのすべてのアクセスを拒否します。認証前ログインページ (`opensearch:ViewLoginPage`) と認証済みアクセス () の両方を拒否します`opensearch:ApplicationAccessAll`。承認されたネットワーク外のユーザーは、サインインページをロードすることも、アプリケーションにアクセスすることもできません。{{プレースホルダー値を}}独自の VPC エンドポイント ID に置き換えます。

**組織全体に VPC エンドポイントアクセスを適用するには**

1. 次のポリシーを という名前のローカルファイルに保存します`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideVpce",
               "Effect": "Deny",
               "Principal": "*",
               "Action": [
                   "opensearch:ViewLoginPage",
                   "opensearch:ApplicationAccessAll"
               ],
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "StringNotEqualsIfExists": {
                       "aws:SourceVpce": "{{vpc-endpoint-id}}"
                   }
               }
           }
       ]
   }
   ```

1. リソースコントロールポリシーを作成します。組織の管理アカウントまたは委任管理者アカウントからこのコマンドを実行します。

   ```
   aws organizations create-policy \
     --name {{DenyOpenSearchUIOutsideVpce}} \
     --description "{{Denies OpenSearch UI access outside the approved VPC endpoint}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   ```

1. 保護する範囲に応じて、ポリシーを組織のルート、組織単位、またはアカウントにアタッチします。

   ```
   aws organizations attach-policy \
     --policy-id {{p-example12345}} \
     --target-id {{111122223333}}
   ```

   詳細については、[「 Organizations ユーザーガイド」の「リソースコントロールポリシーのアタッチとデタッチ](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_attach.html)」を参照してください。 *AWS *

ポリシーが有効になると、承認された VPC エンドポイント外のユーザーはアプリケーションにアクセスできなくなります。アプリケーションの認証タイプとリクエストされた URL に応じて、ユーザーはログインページの代わりに`403 forbidden`レスポンスを受け取るか、サインインにリダイレクトされてアプリケーションへのアクセスが拒否されます。VPC エンドポイント経由で接続する場合は、ログインページにアクセスし、正常にサインインします。

**注記**  
リソースコントロールポリシーの変更が有効になるまでに最大 1 分かかる場合があります。ポリシーを作成、更新、またはアタッチした直後にテストしても、以前の動作が見られることがあります。

## 組織全体での VPC アクセスの強制
<a name="application-network-access-rcp-vpc"></a>

1 つのエンドポイントに名前を付ける代わりに、VPC 内のすべてのインターフェイス VPC エンドポイントを承認するには、 を使用します`aws:SourceVpc`。次のリソースコントロールポリシーは、リクエストが指定された VPC 経由で到着しない限り、組織全体のアクセスを拒否します。{{プレースホルダー値を}}独自の VPC ID に置き換えます。

**組織全体に VPC アクセスを適用するには**

1. 次のポリシーを という名前のローカルファイルに保存します`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideVpc",
               "Effect": "Deny",
               "Principal": "*",
               "Action": [
                   "opensearch:ViewLoginPage",
                   "opensearch:ApplicationAccessAll"
               ],
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "StringNotEqualsIfExists": {
                       "aws:SourceVpc": "{{vpc-id}}"
                   }
               }
           }
       ]
   }
   ```

1. リソースコントロールポリシーを作成してアタッチします。

   ```
   aws organizations create-policy \
     --name {{DenyOpenSearchUIOutsideVpc}} \
     --description "{{Denies OpenSearch UI access outside the approved VPC}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   
   aws organizations attach-policy \
     --policy-id {{p-example12345}} \
     --target-id {{111122223333}}
   ```

## 組織全体での IP アドレス範囲アクセスの強制
<a name="application-network-access-rcp-ip"></a>

次のリソースコントロールポリシーは、企業ネットワークのパブリックエグレス範囲など、承認された IP アドレス範囲からリクエストが送信されない限り、組織全体のアクセスを拒否します。{{プレースホルダー値を}} CIDR 表記の独自の IP アドレス範囲に置き換えます。

**組織全体で IP アドレス範囲アクセスを適用するには**

1. 次のポリシーを という名前のローカルファイルに保存します`policy.json`。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "DenyOpenSearchUIAccessOutsideCorpNetwork",
               "Effect": "Deny",
               "Principal": "*",
               "Action": [
                   "opensearch:ViewLoginPage",
                   "opensearch:ApplicationAccessAll"
               ],
               "Resource": "arn:aws:opensearch:*:*:application/*",
               "Condition": {
                   "NotIpAddress": {
                       "aws:SourceIp": [
                           "{{203.0.113.0/24}}",
                           "{{198.51.100.0/24}}"
                       ]
                   }
               }
           }
       ]
   }
   ```

1. リソースコントロールポリシーを作成してアタッチします。

   ```
   aws organizations create-policy \
     --name {{DenyOpenSearchUIExternalAccess}} \
     --description "{{Denies OpenSearch UI access from outside corporate IP ranges}}" \
     --type RESOURCE_CONTROL_POLICY \
     --content file://policy.json
   
   aws organizations attach-policy \
     --policy-id {{p-example12345}} \
     --target-id {{111122223333}}
   ```

**注記**  
アイデンティティベースの IP の例と同様に、 `aws:SourceIp`は VPC エンドポイント経由で到着するリクエストには存在しません。プライベートアクセスパスとパブリックアクセスパスの両方を使用する場合は、正当な VPC エンドポイントトラフィックを意図せずに拒否しないように、両方の条件キーを考慮してください。