

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accès aux données interrégionales aux domaines OpenSearch
<a name="application-cross-region-data-access-domains"></a>

Vous pouvez configurer vos applications d' OpenSearch interface utilisateur en une seule Région AWS pour accéder à OpenSearch des domaines dans différents Région AWS s. Cela vous permet de créer des tableaux de bord unifiés qui regroupent les données provenant de OpenSearch domaines répartis sur plusieurs Région AWS domaines au sein d'une même partition. La prise en charge des sources de données entre régions nécessite l'activation d'un contrôle d'accès précis sur le domaine cible. Le contrôle d'accès précis fournit une couche d'autorisation supplémentaire au-delà de la politique d'accès au domaine, vous permettant de contrôler l'accès à des index, documents et champs individuels.

## Concepts clés
<a name="cross-region-key-concepts"></a>

Région d'application  
L' Région AWS endroit où votre application d' OpenSearch interface utilisateur est hébergée.

Région cible  
L' Région AWS endroit où réside le OpenSearch domaine. Il peut s'agir de n'importe quelle région de la même partition, que l' OpenSearch interface utilisateur soit disponible ou non dans cette région.

Rôle multicompte  
Rôle IAM dans le compte cible utilisé uniquement lors de l'association de sources de données. OpenSearch L'interface utilisateur assume ce rôle lors de l'appel`es:DescribeDomain`, qui récupère le point de terminaison du domaine et vérifie que le contrôle d'accès détaillé est activé. Ce rôle n'est requis que lorsque le domaine se trouve dans un compte différent de celui de l'application. Pour de plus amples informations, veuillez consulter [Accès aux données entre comptes aux domaines OpenSearch](application-cross-account-data-access-domains.md).

Rôle d'application IAM Identity Center  
Rôle IAM dans le compte d'application utilisé pour accéder au plan de données utilisateur d'IAM Identity Center.

Régions prises en charge (pour les domaines VPC)  
Pour les domaines VPC, vous devez autoriser l' Région AWS hébergement de vos applications d' OpenSearch interface utilisateur lorsque vous autorisez le point de terminaison VPC. Cette liste d'autorisation est requise pour que l' OpenSearch interface utilisateur puisse appeler le domaine VPC.

## Conditions préalables
<a name="cross-region-prerequisites"></a>

Avant de configurer l'accès aux données entre régions, assurez-vous de disposer des éléments suivants :
+ AWS CLI installé et configuré
+ Accès à la fois Compte AWS à la région de l'application et à la région cible
+ OpenSearch domaines pour lesquels le contrôle d'accès détaillé est activé. L'association de sources de données multirégionales n'est prise en charge que pour les domaines pour lesquels le contrôle d'accès détaillé est activé.
+ Pour les scénarios entre comptes : accès à la fois à la source et à la cible Compte AWS
+ Pour les flux IAM Identity Center : une instance d' AWS IAM Identity Center organisation. L'application d' OpenSearch interface utilisateur doit se trouver dans la même région que l'instance IAM Identity Center.

## Scénarios
<a name="cross-region-scenarios"></a>

Choisissez le scénario qui correspond à votre méthode d'authentification et à la configuration de votre domaine :
+ [Scénario 1 : accès d'un utilisateur IAM à un domaine public dans une autre région](#cross-region-scenario-1)
+ [Scénario 2 : accès d'un utilisateur du centre d'identité IAM à un domaine public dans une autre région](#cross-region-scenario-2)
+ [Scénario 3 : utilisateur IAM accédant à un domaine VPC dans une autre région](#cross-region-scenario-3)
+ [Scénario 4 : un utilisateur du centre d'identité IAM accède à un domaine VPC dans une autre région](#cross-region-scenario-4)

Chaque scénario couvre l'accès interrégional pour un même compte. Pour un accès entre comptes et entre régions, combinez les étapes de ces scénarios avec la configuration des rôles entre comptes décrite dans. [Accès aux données entre comptes aux domaines OpenSearch](application-cross-account-data-access-domains.md)

## Scénario 1 : accès d'un utilisateur IAM à un domaine public dans une autre région
<a name="cross-region-scenario-1"></a>

Dans ce scénario, vous créez une application d' OpenSearch interface utilisateur dans une région et vous la connectez au OpenSearch domaine public d'une autre région au sein du même compte.

### Étape 1 : Création du OpenSearch domaine (région cible)
<a name="cross-region-scenario-1-step-1"></a>

Créez un OpenSearch domaine dans la région cible avec un contrôle d'accès détaillé activé. Élargissez la politique d'accès à la racine du compte ou à des principaux IAM spécifiques.

```
aws opensearch create-domain \
  --domain-name {{domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:root"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}/*"}]}' \
  --region {{target-region}}
```

Attendez que le statut du domaine change `Active` avant de continuer.

### Étape 2 : Création de l'application d' OpenSearch interface utilisateur (région de l'application)
<a name="cross-region-scenario-1-step-2"></a>

Créez l'application dans la région d'application avec la source de données inter-régions. La région est automatiquement extraite de l'ARN de la source de données.

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-iam-app}}" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}",
    "dataSourceDescription":"{{Cross-region domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

### Étape 3 : vérification et accès
<a name="cross-region-scenario-1-step-3"></a>

Récupérez les détails de l'application pour obtenir l'URL du point de terminaison :

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Accédez à l'URL du point de terminaison de l'application depuis la réponse.
+ Connectez-vous à l'aide des informations d'identification IAM.
+ L'utilisateur IAM signe les demandes de plan de données avec ses propres informations d'identification.
+ La politique d'accès du domaine cible et les mappages des rôles principaux contrôlent les données auxquelles l'utilisateur peut accéder.

## Scénario 2 : accès d'un utilisateur du centre d'identité IAM à un domaine public dans une autre région
<a name="cross-region-scenario-2"></a>

Dans ce scénario, vous créez une application d' OpenSearch interface utilisateur avec l'authentification IAM Identity Center dans une région et vous la connectez à un OpenSearch domaine public dans une autre région au sein du même compte.

### Étape 1 : créer le OpenSearch domaine avec le centre d'identité IAM activé (région cible)
<a name="cross-region-scenario-2-step-1"></a>

Créez un OpenSearch domaine dans la région cible en activant le contrôle d'accès précis et l'intégration du centre d'identité IAM. Utilisez le `--identity-center-options` paramètre with `IdentityCenterInstanceRegion` pour spécifier la région dans laquelle se trouve votre instance IAM Identity Center. Cette région doit être la même que celle où l'application d' OpenSearch interface utilisateur est hébergée.

```
aws opensearch create-domain \
  --domain-name {{domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --identity-center-options '{"EnabledAPIAccess":true,"IdentityCenterInstanceARN":"arn:aws:sso:::instance/ssoins-{{instance-id}}","IdentityCenterInstanceRegion":"{{idc-region}}","RolesKey":"GroupId","SubjectKey":"UserId"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}/*"}]}' \
  --region {{target-region}}
```

Attendez que le statut du domaine change `Active` avant de continuer.

### Étape 2 : Création du rôle IAM pour l'application IAM Identity Center
<a name="cross-region-scenario-2-step-2"></a>

Créez un rôle IAM que l' OpenSearch interface utilisateur utilise pour accéder au plan de données utilisateur d'IAM Identity Center.

**Pour créer le rôle d'application IAM Identity Center**

1. Créez une politique de confiance avec uniquement la `sts:AssumeRole` déclaration. Vous mettrez à jour cette politique pour ajouter la `sts:SetContext` déclaration après avoir créé l'application à l'étape suivante.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Créez une politique d'autorisation :

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}/*"
     }]
   }
   ```

1. Créez le rôle et associez les politiques :

   ```
   aws iam create-role \
     --role-name {{NeoIdCAppRole}} \
     --assume-role-policy-document file://{{neoidc-trust-policy.json}}
   
   aws iam put-role-policy \
     --role-name {{NeoIdCAppRole}} \
     --policy-name {{NeoIdCAppPermissions}} \
     --policy-document file://{{neoidc-permissions-policy.json}}
   ```

### Étape 3 : Création de l'application d' OpenSearch interface utilisateur avec IAM Identity Center (région de l'application)
<a name="cross-region-scenario-2-step-3"></a>

**Note**  
Assurez-vous que l'instance IAM Identity Center est située dans la même région que la région de l'application d' OpenSearch interface utilisateur.

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-idc-app}}" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-{{instance-id}}",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}",
    "dataSourceDescription":"{{Cross-region domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

Une fois l'application créée, notez l'ID de l'application SSO indiqué dans la réponse. Mettez ensuite à jour la politique de confiance sur le rôle d'application IAM Identity Center pour ajouter la `sts:SetContext` déclaration suivante :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:SetContext",
      "Condition": {
        "ForAllValues:ArnEquals": {
          "sts:RequestContextProviders": "arn:aws:iam::{{account-id}}:oidc-provider/portal.sso.{{idc-region}}.amazonaws.com/apl/{{application-id}}"
        }
      }
    }
  ]
}
```

```
aws iam update-assume-role-policy \
  --role-name {{NeoIdCAppRole}} \
  --policy-document file://{{updated-trust-policy.json}}
```

### Étape 4 : créer et attribuer des utilisateurs et des groupes IAM Identity Center
<a name="cross-region-scenario-2-step-4"></a>

**Création d'un utilisateur IAM Identity Center**  
Exécutez la commande suivante. Remplacez les {{placeholder values}} par vos propres informations.

```
aws identitystore create-user \
  --identity-store-id {{d-directory-id}} \
  --user-name {{user-email}} \
  --display-name "{{display-name}}" \
  --name Formatted=string,FamilyName={{last-name}},GivenName={{first-name}} \
  --emails Value={{user-email}},Type=work,Primary=true
```

**Créez un groupe IAM Identity Center et ajoutez l'utilisateur**  
Exécutez les commandes suivantes :

```
aws identitystore create-group \
  --identity-store-id {{d-directory-id}} \
  --display-name "{{OpenSearchUsers}}" \
  --description "{{Users with OpenSearch access}}"

aws identitystore create-group-membership \
  --identity-store-id {{d-directory-id}} \
  --group-id {{group-id}} \
  --member-id UserId={{user-id}}
```

**Affecter l'utilisateur ou le groupe à l'application**  
Exécutez la commande suivante :

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso::{{account-id}}:application/ssoins-{{instance-id}}/apl-{{application-id}}" \
  --principal-id {{user-id-or-group-id}} \
  --principal-type {{USER}}
```

**Configurer le mappage des rôles principaux sur le domaine cible**  
Associez le groupe IAM Identity Center à un rôle OpenSearch de sécurité sur le domaine cible :

```
curl -XPATCH "https://{{domain-endpoint}}/_plugins/_security/api/rolesmapping/all_access" \
  -u {{admin}}:{{master-password}} \
  -H 'Content-Type: application/json' \
  -d '[{"op": "add", "path": "/backend_roles", "value": ["{{group-id}}"]}]'
```

### Étape 5 : vérification et accès
<a name="cross-region-scenario-2-step-5"></a>

Récupérez les détails de l'application pour obtenir l'URL du point de terminaison :

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Accédez à l'URL du point de terminaison de l'application.
+ Connectez-vous à l'aide des informations d'identification utilisateur d'IAM Identity Center.
+ Les demandes de données des utilisateurs d'IAM Identity Center sont signées avec le rôle d'application IAM Identity Center.
+ Mappages des rôles principaux sur les autorisations d'accès aux données de contrôle de domaine.

## Scénario 3 : utilisateur IAM accédant à un domaine VPC dans une autre région
<a name="cross-region-scenario-3"></a>

Dans ce scénario, vous créez une application d' OpenSearch interface utilisateur dans une région et vous la connectez à un OpenSearch domaine VPC dans une autre région au sein du même compte. Les domaines VPC nécessitent une configuration réseau supplémentaire et une autorisation explicite des points de terminaison VPC avec une prise en charge interrégionale.

### Étape 1 : configurer le VPC (région cible)
<a name="cross-region-scenario-3-step-1"></a>

Ignorez cette étape si un VPC existe déjà dans la région cible.

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region {{target-region}}

# Create subnet
aws ec2 create-subnet \
  --vpc-id {{vpc-id}} \
  --cidr-block 10.0.1.0/24 \
  --availability-zone {{target-region}}a \
  --region {{target-region}}

# Create security group
aws ec2 create-security-group \
  --group-name {{opensearch-vpc-sg}} \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id {{vpc-id}} \
  --region {{target-region}}

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id {{security-group-id}} \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region {{target-region}}
```

En savoir plus sur la [création de domaines VPC](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html).

### Étape 2 : Création du domaine VPC (région cible)
<a name="cross-region-scenario-3-step-2"></a>

```
aws opensearch create-domain \
  --domain-name {{vpc-domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds={{subnet-id}},SecurityGroupIds={{security-group-id}}" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:root"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}/*"}]}' \
  --region {{target-region}}
```

Attendez que le statut du domaine change `Active` avant de continuer.

### Étape 3 : Autoriser le point de terminaison VPC pour le principal du service d' OpenSearch interface utilisateur avec support interrégional (région cible)
<a name="cross-region-scenario-3-step-3"></a>

```
# Authorize the service principal with cross-region support
aws opensearch authorize-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --service "application.opensearchservice.amazonaws.com" \
  --service-options '{"SupportedRegions":["{{target-region}}","{{application-region}}"]}' \
  --region {{target-region}}

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --region {{target-region}}
```

Réponse attendue :

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com",
      "ServiceOptions": {
        "SupportedRegions": ["{{target-region}}", "{{application-region}}"]
      }
    }
  ]
}
```

### Étape 4 : Création de l'application d' OpenSearch interface utilisateur (région de l'application)
<a name="cross-region-scenario-3-step-4"></a>

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-vpc-iam-app}}" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}",
    "dataSourceDescription":"{{Cross-region VPC domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

### Étape 5 : vérification et accès
<a name="cross-region-scenario-3-step-5"></a>

Récupérez les détails de l'application pour obtenir l'URL du point de terminaison :

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Accédez à l'URL du point de terminaison de l'application depuis la réponse.
+ Connectez-vous à l'aide des informations d'identification IAM.
+ L'utilisateur IAM signe les demandes de plan de données avec ses propres informations d'identification.
+ La politique d'accès du domaine cible et les mappages des rôles principaux contrôlent les données auxquelles l'utilisateur peut accéder.

## Scénario 4 : un utilisateur du centre d'identité IAM accède à un domaine VPC dans une autre région
<a name="cross-region-scenario-4"></a>

Dans ce scénario, vous créez une application d' OpenSearch interface utilisateur avec authentification IAM Identity Center dans une région et vous la connectez à un domaine OpenSearch VPC d'une autre région au sein du même compte.

### Étape 1 : configurer le VPC (région cible)
<a name="cross-region-scenario-4-step-1"></a>

Ignorez cette étape si un VPC existe déjà dans la région cible.

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region {{target-region}}

# Create subnet
aws ec2 create-subnet \
  --vpc-id {{vpc-id}} \
  --cidr-block 10.0.1.0/24 \
  --availability-zone {{target-region}}a \
  --region {{target-region}}

# Create security group
aws ec2 create-security-group \
  --group-name {{opensearch-vpc-sg}} \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id {{vpc-id}} \
  --region {{target-region}}

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id {{security-group-id}} \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region {{target-region}}
```

En savoir plus sur la [création de domaines VPC](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html).

### Étape 2 : créer le domaine VPC avec IAM Identity Center activé (région cible)
<a name="cross-region-scenario-4-step-2"></a>

Créez un OpenSearch domaine dans la région cible avec un contrôle d'accès précis, l'intégration du centre d'identité IAM et la configuration VPC activés. Mettez à jour la politique d'accès pour autoriser le rôle d'application IAM Identity Center et ajoutez le `--identity-center-options` paramètre :

```
aws opensearch create-domain \
  --domain-name {{vpc-domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds={{subnet-id}},SecurityGroupIds={{security-group-id}}" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --identity-center-options '{"EnabledAPIAccess":true,"IdentityCenterInstanceARN":"arn:aws:sso:::instance/ssoins-{{instance-id}}","IdentityCenterInstanceRegion":"{{idc-region}}","RolesKey":"GroupId","SubjectKey":"UserId"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}/*"}]}' \
  --region {{target-region}}
```

Attendez que le statut du domaine change `Active` avant de continuer.

### Étape 3 : Autoriser le point de terminaison VPC pour le principal du service d' OpenSearch interface utilisateur avec support interrégional (région cible)
<a name="cross-region-scenario-4-step-3"></a>

**Important**  
Il s'agit d'une étape critique propre aux domaines VPC dotés d'un accès interrégional. Le service d' OpenSearch interface utilisateur doit être explicitement autorisé à accéder au point de terminaison VPC, et vous devez inclure la région de l'application dans la `SupportedRegions` liste.

```
# Authorize the service principal with cross-region support
aws opensearch authorize-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --service "application.opensearchservice.amazonaws.com" \
  --service-options '{"SupportedRegions":["{{target-region}}","{{application-region}}"]}' \
  --region {{target-region}}

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --region {{target-region}}
```

Réponse attendue :

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com",
      "ServiceOptions": {
        "SupportedRegions": ["{{target-region}}", "{{application-region}}"]
      }
    }
  ]
}
```

### Étape 4 : Création du rôle IAM pour l'application IAM Identity Center
<a name="cross-region-scenario-4-step-4"></a>

Créez un rôle IAM que l' OpenSearch interface utilisateur utilise pour accéder au plan de données utilisateur d'IAM Identity Center.

**Pour créer le rôle d'application IAM Identity Center**

1. Créez une politique de confiance avec uniquement la `sts:AssumeRole` déclaration. Vous mettrez à jour cette politique pour ajouter la `sts:SetContext` déclaration après avoir créé l'application à l'étape suivante.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Créez une politique d'autorisation :

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}/*"
     }]
   }
   ```

1. Créez le rôle et associez les politiques :

   ```
   aws iam create-role \
     --role-name {{NeoIdCAppRole}} \
     --assume-role-policy-document file://{{neoidc-trust-policy.json}}
   
   aws iam put-role-policy \
     --role-name {{NeoIdCAppRole}} \
     --policy-name {{NeoIdCAppPermissions}} \
     --policy-document file://{{neoidc-permissions-policy.json}}
   ```

### Étape 5 : Création de l'application d' OpenSearch interface utilisateur avec IAM Identity Center (région de l'application)
<a name="cross-region-scenario-4-step-5"></a>

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-vpc-idc-app}}" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-{{instance-id}}",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}",
    "dataSourceDescription":"{{Cross-region VPC domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

Une fois l'application créée, notez l'ID de l'application SSO indiqué dans la réponse. Mettez ensuite à jour la politique de confiance sur le rôle d'application IAM Identity Center pour ajouter la `sts:SetContext` déclaration suivante :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:SetContext",
      "Condition": {
        "ForAllValues:ArnEquals": {
          "sts:RequestContextProviders": "arn:aws:iam::{{account-id}}:oidc-provider/portal.sso.{{idc-region}}.amazonaws.com/apl/{{application-id}}"
        }
      }
    }
  ]
}
```

```
aws iam update-assume-role-policy \
  --role-name {{NeoIdCAppRole}} \
  --policy-document file://{{updated-trust-policy.json}}
```

### Étape 6 : créer et attribuer des utilisateurs et des groupes IAM Identity Center
<a name="cross-region-scenario-4-step-6"></a>

Suivez les mêmes étapes que [Étape 4 : créer et attribuer des utilisateurs et des groupes IAM Identity Center](#cross-region-scenario-2-step-4) pour créer des utilisateurs et des groupes, les affecter à l'application et configurer le mappage des rôles principaux sur le domaine cible.

### Étape 7 : Vérification et accès
<a name="cross-region-scenario-4-step-7"></a>

Récupérez les détails de l'application pour obtenir l'URL du point de terminaison :

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Accédez à l'URL du point de terminaison de l'application.
+ Connectez-vous à l'aide des informations d'identification utilisateur d'IAM Identity Center.
+ Les demandes de données des utilisateurs d'IAM Identity Center sont signées avec le rôle d'application IAM Identity Center.
+ Mappages des rôles principaux sur les autorisations d'accès aux données de contrôle de domaine.

## Gestion des applications
<a name="cross-region-managing-applications"></a>

**Mettre à jour une application avec des sources de données interrégionales**  
Exécutez la commande suivante. Remplacez les {{placeholder values}} par vos propres informations.

```
aws opensearch update-application \
  --region {{application-region}} \
  --id {{application-id}} \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region-1}}:{{account-id}}:domain/{{domain-1}}",
    "dataSourceDescription":"{{Domain in target Region 1}}"
  },{
    "dataSourceArn":"arn:aws:es:{{target-region-2}}:{{account-id}}:domain/{{domain-2}}",
    "dataSourceDescription":"{{Domain in target Region 2}}"
  }]'
```

**Important**  
L'opération de mise à jour remplace l'ensemble du tableau de sources de données. Incluez toutes les sources de données que vous souhaitez conserver.

**Lister les applications**  
Exécutez la commande suivante :

```
aws opensearch list-applications \
  --region {{application-region}}
```

**Supprimer une application**  
Exécutez la commande suivante :

```
aws opensearch delete-application \
  --region {{application-region}} \
  --id {{application-id}}
```

**Révoquer l'accès aux points de terminaison VPC pour des régions spécifiques**  
Pour révoquer l'accès entre régions pour des zones spécifiques Région AWS tout en conservant d'autres, utilisez le `--service-options` paramètre avec les régions pour révoquer :

```
aws opensearch revoke-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --service "application.opensearchservice.amazonaws.com" \
  --service-options '{"SupportedRegions":["{{region-to-revoke}}"]}' \
  --region {{target-region}}
```

## Référence rapide
<a name="cross-region-quick-reference"></a>

Les tableaux suivants résument les principales différences entre les types de domaines, les méthodes d'authentification et l'accès entre régions et entre régions.


**Comparaison entre le domaine public et le domaine VPC**  

| Aspect | Domaine public | Domaine VPC | 
| --- | --- | --- | 
| Autorisation du point de terminaison VPC | Facultatif | Obligatoire — doit être autorisé application.opensearchservice.amazonaws.com avec SupportedRegions | 
| Configuration du réseau | Aucune | VPC, sous-réseau, groupe de sécurité avec HTTPS (443) entrant | 
| Politique d'accès IAM | Obligatoire | Obligatoire | 


**Comparaison entre un utilisateur IAM et un utilisateur IAM Identity Center**  

| Aspect | Utilisateur IAM | Utilisateur du centre d'identité IAM | 
| --- | --- | --- | 
| Informations d'identification du plan de données | Informations d'identification IAM propres à l'utilisateur | Rôle d'application IAM Identity Center | 
| Contrôle d’accès | Politique d'accès au domaine et mappage des rôles principaux | Politique d'accès au domaine et mappage des rôles principaux | 
| Contrainte de région d'application | N'importe quelle région | Doit se trouver dans la même région que l'instance IAM Identity Center | 
| Configuration de domaine | Standard | Nécessite --identity-center-options avec IdentityCenterInstanceRegion | 
| Configuration supplémentaire | Aucune | Rôle de l'application IAM Identity Center, user/group création, attribution des applications, mappage des rôles principaux | 


**Même région par rapport à une région interrégionale**  

| Aspect | Même région | Interrégional | 
| --- | --- | --- | 
| ARN de la source de données | Même région que l'application | Région différente de celle de l'application (même partition) | 
| Autorisation du point de terminaison VPC | Omettre --service-options | Inclure --service-options avec SupportedRegions | 
| Configuration du domaine IAM Identity Center | IdentityCenterInstanceRegion facultatif | IdentityCenterInstanceRegion obligatoire | 
| Support pour cloisons croisées | N/A | Non pris en charge : les sources de données doivent se trouver dans la même partition | 

## Remarques importantes
<a name="cross-region-important-notes"></a>
+ L'association de sources de données entre régions nécessite l'activation d'un contrôle d'accès précis sur le domaine cible.
+ Les sources de données interrégionales doivent se trouver dans la même partition. L'accès entre partitions (par exemple, de `aws` à`aws-cn`) n'est pas pris en charge.
+ La région de la source de données est automatiquement extraite de l'ARN de la source de données. Aucun paramètre de région supplémentaire n'est nécessaire dans le `CreateApplication` ou `UpdateApplication` APIs.
+ Pour les sources de données interrégionales portant sur le même compte, ce `iamRoleForDataSourceArn` n'est pas obligatoire. Il n'est nécessaire que pour les sources de données entre comptes.
+ Pour les domaines VPC, vous devez inclure la région de l'application dans le `SupportedRegions` paramètre lors de l'appel. `AuthorizeVpcEndpointAccess` L'omission `--service-options` autorise uniquement l'accès à la même région.
+ Pour les flux IAM Identity Center, l'application d' OpenSearch interface utilisateur doit se trouver dans la même région que l'instance IAM Identity Center.
+ Pour les flux IAM Identity Center comportant des domaines interrégionaux, le domaine cible doit être inclus `--identity-center-options` pour permettre l'`IdentityCenterInstanceRegion`introspection des jetons entre régions.
+ Versions du moteur prises en charge : OpenSearch 1.3 et versions ultérieures.

## Résolution des problèmes
<a name="cross-region-troubleshooting"></a>


| Problème | Résolution | 
| --- | --- | 
| La création de l'application échoue avec le message « Impossible d'accéder au domaine » | Vérifiez que le domaine existe dans la région cible et que le contrôle d'accès détaillé est activé. Pour les scénarios multi-comptes, vérifiez que le rôle multi-comptes est es:DescribeDomain autorisé et que la politique de confiance autorise le compte source. | 
| L'accès au domaine VPC échoue pour plusieurs régions | Assurez-vous que le point de terminaison VPC est autorisé application.opensearchservice.amazonaws.com avec la région de l'application incluse. SupportedRegions | 
| Accès au plan de données refusé à l'utilisateur IAM | Vérifiez que la politique d'accès au domaine cible autorise l'utilisateur IAM ou le principal du rôle, et que les mappages précis des rôles du backend de contrôle d'accès accordent les autorisations appropriées. | 
| Accès au plan de données refusé à l'utilisateur d'IAM Identity Center | Vérifiez que le mappage des rôles principaux inclut l'ID de groupe IAM Identity Center, que la politique de domaine autorise le rôle d'application IAM Identity Center et qu'IdentityCenterInstanceRegionil est correctement défini sur la même région que l'application d' OpenSearch interface utilisateur du domaine. | 
| Source de données entre partitions rejetée | L'accès entre partitions n'est pas pris en charge. Assurez-vous que l'ARN de la source de données se trouve dans la même partition que l'application. | 
| L'authentification IAM Identity Center échoue pour un domaine interrégional | Vérifiez qu'elle IdentityCenterInstanceRegion est définie sur la bonne région dans laquelle votre instance IAM Identity Center est activée. L'application d' OpenSearch interface utilisateur doit également se trouver dans cette même région. | 