

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.

# Gestion des plugins personnalisés dans Amazon OpenSearch Service
<a name="custom-plugins"></a>

À l'aide de plugins personnalisés pour OpenSearch Service, vous pouvez étendre les OpenSearch fonctionnalités dans des domaines tels que l'analyse linguistique, le filtrage personnalisé, le classement, etc., ce qui vous permet de créer des expériences de recherche personnalisées. Des plugins personnalisés pour OpenSearch peuvent être développés en étendant la `org.opensearch.plugins.Plugin` classe puis en l'empaquetant dans un `.zip` fichier. 

Les extensions de plug-in suivantes sont actuellement prises en charge par Amazon OpenSearch Service :
+ **AnalysisPlugin**— Étend les fonctionnalités d'analyse en ajoutant, par exemple, des analyseurs personnalisés, des tokeniseurs de caractères ou des filtres pour le traitement de texte.
+ **SearchPlugin**— Améliore les capacités de recherche grâce à des types de requêtes personnalisés, à des algorithmes de similarité, à des options de suggestion et à des agrégations.
+ **MapperPlugin**— Vous permet de créer des types de champs personnalisés et leurs configurations de mappage OpenSearch, ce qui vous permet de définir comment les différents types de données doivent être stockés et indexés.
+ **ScriptPlugin**— Vous permet d'ajouter des fonctionnalités de script personnalisées, par exemple OpenSearch, à des scripts personnalisés pour des opérations telles que la notation, le tri et les transformations des valeurs des champs lors de la recherche ou de l'indexation.

Vous pouvez utiliser la console OpenSearch de service ou les commandes d'API existantes pour les packages personnalisés afin de télécharger et d'associer le plug-in au cluster Amazon OpenSearch Service. Vous pouvez également utiliser la [DescribePackages](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DescribePackages.html)commande pour décrire tous les packages de votre compte et pour afficher des détails tels que les détails de OpenSearch la version et des erreurs. OpenSearch Le service valide le package de plug-in pour vérifier la compatibilité des versions, les vulnérabilités de sécurité et les opérations de plug-in autorisées. Pour plus d'informations sur les packages personnalisés, consultez[Importation et gestion de packages dans Amazon OpenSearch Service](custom-packages.md).

**OpenSearch version et Région AWS support**  
Les plugins personnalisés sont pris en charge sur les domaines de OpenSearch service qui exécutent OpenSearch la version 2.15 dans les versions suivantes : Régions AWS
+ USA Est (Ohio) (us-east-2)
+ USA Est (Virginie du Nord) (us-east-1)
+ USA Ouest (Oregon) (us-west-2)
+ Asie-Pacifique (Mumbai) (ap-south-1)
+ Asie-Pacifique (Séoul) (ap-northeast-2)
+ Asie-Pacifique (Singapour) (ap-southeast-1)
+ Asie-Pacifique (Sydney) (ap-southeast-2)
+ Asie-Pacifique (Tokyo) (ap-northeast-1)
+ Canada (Centre) (ca-central-1)
+ Europe (Francfort) (eu-central-1)
+ Europe (Irlande) (eu-west-1)
+ Europe (Londres) (eu-west-2)
+ Europe (Paris) (eu-west-3)
+ Amérique du Sud (São Paulo) (sa-east-1)

**Note**  
Les plugins personnalisés contiennent du code développé par l'utilisateur. Tout problème, y compris les violations des SLA, causé par le code développé par l'utilisateur ne donne pas droit à des crédits SLA. Pour plus d'informations, consultez [Amazon OpenSearch Service - Service Level Agreement](https://aws.amazon.com/opensearch-service/sla/).

**Topics**
+ [Quotas de plugins](#plugin-limits)
+ [Conditions préalables](#custom-plugin-prerequisites)
+ [Résolution des problèmes](#custom-plugin-troubleshooting)
+ [Installation d'un plugin personnalisé à l'aide de la console](#custom-plugin-install-console)
+ [Gestion des plugins personnalisés à l'aide du AWS CLI](#managing-custom-plugins-cli)
+ [AWS KMS Intégration du package personnalisé Amazon OpenSearch Service](custom-package-kms-integration.md)

## Quotas de plugins
<a name="plugin-limits"></a>
+ Vous pouvez créer jusqu'à 25 plugins personnalisés par compte et par région. 
+ La taille maximale non compressée d'un plugin est de 1 Go.
+ Le nombre maximum de plugins pouvant être associés à un seul domaine est de 20. Ce quota s'applique à tous les types de plugins combinés : optionnels, tiers et personnalisés.
+ Les plugins personnalisés sont pris en charge sur les domaines exécutant OpenSearch la version 2.15 ou ultérieure.
+ Le `descriptor.properties` fichier de votre plugin doit prendre en charge une version du moteur similaire à la version 2.15.0 ou à toute version 2.x.x, où la version du correctif est définie sur zéro.

## Conditions préalables
<a name="custom-plugin-prerequisites"></a>

Avant d'installer un plugin personnalisé et de l'associer à un domaine, assurez-vous de répondre aux exigences suivantes :
+ La version du moteur prise en charge pour le plugin dans le `descriptor.properties` fichier doit être similaire à `2.15.0` ou`2.x.0`. C'est-à-dire que la version du correctif doit être nulle.
+ Les fonctionnalités suivantes doivent être activées sur votre domaine :
  +  [Node-to-node chiffrement](ntn.md)
  +  [Chiffrement au repos](encryption-at-rest.md)
  + [`EnforceHTTPS`est défini sur « vrai »](createupdatedomains.md)

    Voir également [opensearch-https-required](https://docs.aws.amazon.com/config/latest/developerguide/opensearch-https-required.html)le *guide du AWS Config développeur*.
  + Les clients doivent soutenir **Policy-min-TLS-1-2-PFS-2023-10**. Vous pouvez spécifier ce support à l'aide de la commande suivante. Remplacez le *placeholder value* par vos propres informations :

    ```
    aws opensearch update-domain-config \
        --domain-name domain-name \
        --domain-endpoint-options '{"TLSSecurityPolicy":"Policy-Min-TLS-1-2-PFS-2023-10" }'
    ```

    Pour plus d'informations, consultez [DomainEndpointOptions](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DomainEndpointOptions.html)le manuel *Amazon OpenSearch Service API Reference*.

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

Si le système renvoie le message d'erreur`PluginValidationFailureReason : The provided plugin could not be loaded`, consultez [L'installation du plugin personnalisé échoue en raison de la compatibilité des versions](handling-errors.md#troubleshooting-custom-plugins) les informations de dépannage.

## Installation d'un plugin personnalisé à l'aide de la console
<a name="custom-plugin-install-console"></a>

Pour associer un plugin tiers à un domaine, importez d'abord la licence et la configuration du plugin sous forme de packages.

**Pour installer un plugin personnalisé**

1. Connectez-vous à la console Amazon OpenSearch Service à la [https://console.aws.amazon.com/aos/maison](https://console.aws.amazon.com/aos/home).

1. Dans le volet de navigation de gauche, choisissez **Packages**.

1. Choisissez **Import package (Importer un package)**.

1. Dans **Nom**, entrez un nom unique et facilement identifiable pour le plugin.

1. (Facultatif) Pour la **description**, fournissez tous les détails utiles sur le package ou son objectif.

1. Pour le **type de package**, choisissez **Plugin**.

1. Dans le **champ Source du package**, entrez le chemin ou accédez au fichier ZIP du plugin dans Amazon S3.

1. Pour la **version OpenSearch du moteur**, choisissez la version prise OpenSearch en charge par le plugin.

1. Pour **le chiffrement du package**, choisissez si vous souhaitez personnaliser la clé de chiffrement du package. Par défaut, OpenSearch Service chiffre le package du plugin avec un Clé détenue par AWS. Vous pouvez plutôt utiliser une clé gérée par le client.

1. Choisissez **Importer**.

Après avoir importé le package du plugin, associez-le à un domaine. Pour obtenir des instructions, veuillez consulter [Importer et associer un package à un domaine](custom-packages.md#associate-console).

## Gestion des plugins personnalisés à l'aide du AWS CLI
<a name="managing-custom-plugins-cli"></a>

Vous pouvez utiliser le AWS CLI pour gérer un certain nombre de tâches personnalisées du plugin.

**Topics**
+ [Installation d'un plugin personnalisé à l'aide du AWS CLI](#custom-plugin-install-cli)
+ [Mettre à jour un plugin personnalisé à l'aide du AWS CLI](#custom-plugin-update-cli)
+ [Créer ou mettre à jour un plugin personnalisé avec une AWS KMS clé de sécurité](#custom-plugin-kms-key-security-cli)
+ [Mise à niveau d'un domaine de OpenSearch service avec des plugins personnalisés vers une version ultérieure de OpenSearch l'utilisation du AWS CLI](#custom-plugin-domain-upgrade-cli)
+ [Désinstaller et afficher l'état de dissociation d'un plugin personnalisé](#custom-plugin-uninstall-cli)

### Installation d'un plugin personnalisé à l'aide du AWS CLI
<a name="custom-plugin-install-cli"></a>

**Avant de commencer**  
Avant de pouvoir associer un plugin personnalisé à votre domaine, vous devez le télécharger dans un bucket Amazon Simple Storage Service (Amazon S3). Le compartiment doit être situé à l' Région AWS endroit où vous souhaitez utiliser le plugin. Pour plus d'informations sur l'ajout d'un objet dans un compartiment S3, consultez la section [Chargement d'objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.

Si votre plugin contient des informations sensibles, spécifiez le chiffrement côté serveur avec des clés gérées par S3 lorsque vous le téléchargez. Après avoir chargé le fichier, notez son chemin d'accès S3. Le format du chemin d'accès est `s3://amzn-s3-demo-bucket/file-path/file-name`.

**Note**  
Vous pouvez éventuellement sécuriser un plugin personnalisé lorsque vous le créez en spécifiant une clé AWS Key Management Service (AWS KMS). Pour plus d'informations, consultez [Créer ou mettre à jour un plugin personnalisé avec une AWS KMS clé de sécurité](#custom-plugin-kms-key-security-cli).

**Pour installer un plugin personnalisé à l'aide du AWS CLI**

1. Créez un nouveau package pour votre plugin personnalisé en exécutant la commande [create-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-package.html) suivante, en vous assurant que les conditions suivantes sont remplies :
   + L'emplacement du compartiment et de la clé doit pointer vers le `.zip` fichier du plugin dans un compartiment S3 du compte dans lequel vous exécutez les commandes. 
   + Le compartiment S3 doit se trouver dans la même région que celle dans laquelle le package est créé. 
   + Seuls `.zip` les fichiers sont pris en charge pour les `ZIP-PLUGIN` packages. 
   + Le contenu du `.zip` fichier doit suivre la structure du répertoire prévue par le plugin.
   + La valeur de `--engine-version` doit être au format`OpenSearch_{MAJOR}.{MINOR}`. Par exemple : **OpenSearch\$12.17**.

   Remplacez le *placeholder values* par vos propres informations :

   ```
   aws opensearch create-package \
       --package-name package-name \
       --region region \
       --package-type ZIP-PLUGIN \
       --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=s3-key \
       --engine-version opensearch-version
   ```

1. (Facultatif) Consultez l'état de l'`create-package`opération, y compris les éventuels résultats de validation et de vulnérabilité en matière de sécurité, à l'aide de la commande [describe-packages](https://docs.aws.amazon.com/cli/latest/reference/es/describe-packages.html). Remplacez le *placeholder values* par vos propres informations :

   ```
   aws opensearch describe-packages \
       --region region  \
       --filters '[{"Name": "PackageType","Value": ["ZIP-PLUGIN"]}, {"Name": "PackageName","Value": ["package-name"]}]'
   ```

   La commande renvoie des informations semblables à ce qui suit :

   ```
   {
       "PackageDetailsList": [{
           "PackageID": "pkg-identifier",
           "PackageName": "package-name",
           "PackageType": "ZIP-PLUGIN",
           "PackageStatus": "VALIDATION_FAILED",
           "CreatedAt": "2024-11-11T13:07:18.297000-08:00",
           "LastUpdatedAt": "2024-11-11T13:10:13.843000-08:00",
           "ErrorDetails": {
               "ErrorType": "",
               "ErrorMessage": "PluginValidationFailureReason : Dependency Scan reported 3 vulnerabilities for the plugin: CVE-2022-23307, CVE-2019-17571, CVE-2022-23305"
           },
           "EngineVersion": "OpenSearch_2.15",
           "AllowListedUserList": [],
           "PackageOwner": "OWNER-XXXX"
       }]
   }
   ```
**Note**  
Pendant l'`create-package`opération, Amazon OpenSearch Service vérifie la `ZIP-PLUGIN` compatibilité des versions, les extensions de plug-in prises en charge et les failles de sécurité. Les failles de sécurité sont analysées à l'aide du service [Amazon Inspector](https://aws.amazon.com/inspector/getting-started/). Les résultats de ces vérifications sont affichés dans `ErrorDetails` le champ de la réponse de l'API.

1. Utilisez la commande [associate-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-package.html) pour associer le plugin au domaine de OpenSearch service de votre choix à l'aide de l'ID du package créé à l'étape précédente.
**Astuce**  
Si vous avez plusieurs plug-ins, vous pouvez utiliser la commande [associate-packages](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-packages.html) pour associer plusieurs packages à un domaine en une seule opération. 

   Remplacez le *placeholder values* par vos propres informations :

   ```
   aws opensearch associate-package \
       --domain-name domain-name \
       --region region \
       --package-id package-id
   ```
**Note**  
Le plugin est installé et désinstallé à l'aide d'un processus de [déploiement bleu/vert](managedomains-configuration-changes.md).

1. (Facultatif) Utilisez la [list-packages-for-domain](https://docs.aws.amazon.com/cli/latest/reference/opensearch/list-packages-for-domain.html)commande pour afficher le statut de l'association. Le statut de l'association change au fur et à mesure que le flux de travail passe de `ASSOCIATING` à`ACTIVE`. Le statut de l'association passe à ACTIVE une fois que l'installation du plugin est terminée et que le plugin est prêt à être utilisé.

   Remplacez les *placeholder values* par vos propres informations.

   ```
   aws opensearch list-packages-for-domain \
       --region region \
       --domain-name domain-name
   ```

### Mettre à jour un plugin personnalisé à l'aide du AWS CLI
<a name="custom-plugin-update-cli"></a>

Utilisez la commande [update-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/update-package.html) pour apporter des modifications à un plugin.

**Note**  
Vous pouvez éventuellement sécuriser un plugin personnalisé lorsque vous le mettez à jour en spécifiant une clé AWS Key Management Service (AWS KMS). Pour plus d'informations, consultez [Créer ou mettre à jour un plugin personnalisé avec une AWS KMS clé de sécurité](#custom-plugin-kms-key-security-cli).

**Pour mettre à jour un plugin personnalisé à l'aide du AWS CLI**
+ Exécutez la commande suivante. Remplacez les *placeholder values* par vos propres informations.

  ```
  aws opensearch update-package \
      --region region \
      --package-id package-id \
      --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=s3-key \
      --package-description description
  ```

Après avoir mis à jour un package, vous pouvez utiliser la commande [associate-package](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-package.html) ou [associate-packages](https://docs.aws.amazon.com/cli/latest/reference/opensearch/associate-packages.html) pour appliquer les mises à jour de package à un domaine.

**Note**  
 Vous pouvez auditer, créer, mettre à jour, associer et dissocier des opérations sur le plugin à l'aide AWS CloudTrail de. Pour de plus amples informations, veuillez consulter [Surveillance des appels OpenSearch d'API Amazon Service avec AWS CloudTrail](managedomains-cloudtrailauditing.md).

### Créer ou mettre à jour un plugin personnalisé avec une AWS KMS clé de sécurité
<a name="custom-plugin-kms-key-security-cli"></a>

Vous pouvez sécuriser un plugin personnalisé lorsque vous le créez ou le mettez à jour en spécifiant une AWS KMS clé. Pour ce faire, définissez `PackageEncryptionOptions` `true` et spécifiez le nom de ressource Amazon (ARN) de la clé, comme indiqué dans les exemples suivants.

**Exemple : créer un plugin personnalisé avec AWS KMS clé de sécurité**

```
aws opensearch create-package \
    --region us-east-2  --package-name my-custom-package \
    --package-type ZIP-PLUGIN \
    --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=my-s3-key 
    --engine-version OpenSearch_2.15   
"PackageConfigOptions": {
     ...
  }
  "PackageEncryptionOptions": {
    "Enabled": true,
    "KmsKeyId":"arn:aws:kms:us-east-2:111222333444:key/2ba228d5-1d09-456c-ash9-daf42EXAMPLE"
  }
```

**Exemple : mise à jour d'un plugin personnalisé avec AWS KMS clé de sécurité**

```
aws opensearch update-package \
    --region us-east-2  --package-name my-custom-package \
    --package-type ZIP-PLUGIN \
    --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=my-s3-key 
    --engine-version OpenSearch_2.15   
"PackageConfigOptions": {
     ...
  }
  "PackageEncryptionOptions": {
    "Enabled": true,
    "KmsKeyId":"arn:aws:kms:us-east-2:111222333444:key/2ba228d5-1d09-456c-ash9-daf42EXAMPLE"
  }
```

**Important**  
Si la AWS KMS clé que vous spécifiez est désactivée ou supprimée, le cluster associé peut être inopérationnel.

Pour plus d'informations sur AWS KMS l'intégration avec des packages personnalisés,[AWS KMS Intégration du package personnalisé Amazon OpenSearch Service](custom-package-kms-integration.md).

### Mise à niveau d'un domaine de OpenSearch service avec des plugins personnalisés vers une version ultérieure de OpenSearch l'utilisation du AWS CLI
<a name="custom-plugin-domain-upgrade-cli"></a>

Lorsque vous devez mettre à niveau un domaine de OpenSearch service qui utilise des plugins personnalisés vers une version ultérieure de OpenSearch, effectuez les processus suivants.

**Pour mettre à niveau un domaine de OpenSearch service avec des plugins personnalisés vers une version ultérieure de OpenSearch l'utilisation du AWS CLI**

1. Utilisez la commande create-package pour créer un nouveau package pour votre plugin en spécifiant la nouvelle OpenSearch version.

   Assurez-vous que le nom du package est le même pour le plugin pour toutes les versions du moteur. La modification du nom du package entraîne l'échec du processus de mise à niveau du domaine pendant le blue/green déploiement.

1. Mettez à niveau votre domaine vers la version supérieure en suivant les étapes décrites dans[Mise à niveau des domaines Amazon OpenSearch Service](version-migration.md).

   Au cours de ce processus, Amazon OpenSearch Service dissocie la version précédente du package de plug-in et installe la nouvelle version à l'aide d'un blue/green déploiement.

### Désinstaller et afficher l'état de dissociation d'un plugin personnalisé
<a name="custom-plugin-uninstall-cli"></a>

Pour désinstaller le plugin de n'importe quel domaine, vous pouvez utiliser la commande [dissociate-package](https://docs.aws.amazon.com/cli/latest/reference/es/dissociate-package.html). L'exécution de cette commande supprime également tous les packages de configuration ou de licence associés. Vous pouvez ensuite utiliser la [list-packages-for-domain](https://docs.aws.amazon.com/cli/latest/reference/es/list-packages-for-domain.html)commande pour afficher l'état de la dissociation.

**Astuce**  
Vous pouvez également utiliser la commande [dissociate-packages](https://docs.aws.amazon.com/cli/latest/reference/opensearch/dissociate-packages.html) pour désinstaller plusieurs plugins d'un domaine en une seule opération. 

**Pour désinstaller et afficher l'état de dissociation d'un plugin personnalisé**

1. Désactivez le plugin dans chaque index. Cela doit être fait avant de dissocier le package du plugin. 

   Si vous essayez de désinstaller un plugin avant de le désactiver dans tous les index, le processus de blue/green déploiement reste bloqué`Processing`.

1. Exécutez la commande suivante pour désinstaller le plugin. Remplacez les *placeholder values* par vos propres informations.

   ```
   aws opensearch dissociate-package \
       --region region \
       --package-id plugin-package-id \
       --domain-name domain name
   ```

1. (Facultatif) Exécutez la [list-packages-for-domain](https://docs.aws.amazon.com/cli/latest/reference/opensearch/list-packages-for-domain.html)commande pour afficher l'état de la dissociation.

# AWS KMS Intégration du package personnalisé Amazon OpenSearch Service
<a name="custom-package-kms-integration"></a>

Les packages personnalisés Amazon OpenSearch Service fournissent un cryptage par défaut pour protéger vos `ZIP-PLUGIN` packages au repos en utilisant Clés gérées par AWS.
+ **Clés détenues par AWS**— Les packages personnalisés Amazon OpenSearch Service utilisent ces clés par défaut pour chiffrer automatiquement vos `ZIP-PLUGIN` colis. Vous ne pouvez pas afficher, gérer, utiliser Clés détenues par AWS ou auditer leur utilisation. Toutefois, vous n’avez pas besoin de prendre de mesure ou de modifier les programmes pour protéger les clés qui chiffrent vos données. Pour plus d’informations, consultez [Clés détenues par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) dans le *Guide du développeur AWS Key Management Service *.
+ **Clés gérées par le client** — Vous pouvez ajouter une deuxième couche de chiffrement à l'existant Clés détenues par AWS en choisissant une clé gérée par le client lors de la création de votre package `ZIP-PLUGIN` personnalisé.

  Les packages personnalisés Amazon OpenSearch Service prennent en charge l'utilisation d'une clé symétrique gérée par le client que vous créez, détenez et gérez pour ajouter une deuxième couche de chiffrement par rapport au chiffrement que vous AWS possédez déjà. Comme vous avez le contrôle total de cette couche de chiffrement, vous pouvez effectuer les tâches suivantes :
  + Établissement et gestion des stratégies de clé
  + Établir et maintenir des politiques et des subventions Gestion des identités et des accès AWS (IAM)
  + Activation et désactivation des stratégies de clé
  + Rotation des matériaux de chiffrement de clé
  + Ajout de balises
  + Création d’alias de clé
  + Planification de clés pour suppression

Pour plus d’informations, consultez [Clés gérées par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) dans le *Guide du développeur AWS Key Management Service *.

**Note**  
Les packages personnalisés Amazon OpenSearch Service activent automatiquement le chiffrement Clés détenues par AWS au repos sans frais. Toutefois, AWS KMS des frais s'appliquent lorsque vous utilisez une clé gérée par le client. Pour plus d’informations sur la tarification, consultez [Tarification d’AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

## Comment le OpenSearch service de packages personnalisés Amazon Service utilise les subventions dans AWS KMS
<a name="custom-package-kms-grants"></a>

OpenSearch Les packages personnalisés de service nécessitent une autorisation pour utiliser votre clé gérée par le client.

Lorsque vous créez un `ZIP-PLUGIN` package chiffré à l'aide d'une clé gérée par le client, le OpenSearch service de packages personnalisés Amazon Service crée une subvention en votre nom en envoyant une [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)demande à AWS KMS. Les autorisations AWS KMS permettent au OpenSearch Service d'accéder à une AWS KMS clé de votre compte. Les autorisations créées par les packages personnalisés du OpenSearch Service sont soumises à une contrainte qui autorise les opérations uniquement lorsque la demande inclut un contexte de chiffrement avec votre ID de package personnalisé.

Les packages personnalisés Amazon OpenSearch Service nécessitent l'autorisation d'utiliser votre clé gérée par le client pour les opérations internes suivantes :


| Opération | Description | 
| --- | --- | 
| DescribeKey | Envoie DescribeKey des demandes AWS KMS à pour vérifier que l'ID de clé symétrique géré par le client saisi lors de la création du package de plug-in est valide. | 
| GenerateDataKeyWithoutPlaintext | Envoie GenerateDataKeyWithoutPlaintext des demandes AWS KMS pour générer des clés de données chiffrées par votre clé gérée par le client. | 
| GenerateDataKey | Envoie des GenerateDataKey demandes AWS KMS à pour générer des clés de données afin de chiffrer le package lors de sa copie interne. | 
| Decrypt | Envoie Decrypt des demandes AWS KMS pour déchiffrer les clés de données chiffrées afin qu'elles puissent être utilisées pour déchiffrer vos données. | 

Vous pouvez révoquer l'accès à l'autorisation ou supprimer l'accès du service à la clé gérée par le client à tout moment. Dans ce cas, le OpenSearch Service ne pourra accéder à aucune donnée chiffrée par la clé gérée par le client, ce qui affectera les opérations qui dépendent de ces données. Par exemple, si vous tentez d'associer un package de plug-in auquel OpenSearch Service ne peut pas accéder, l'opération renvoie une `AccessDeniedException` erreur.

## Création d’une clé gérée par le client
<a name="custom-package-create-cmk"></a>

Vous pouvez créer une clé symétrique gérée par le client en utilisant le AWS Management Console ou le AWS KMS APIs.

**Pour créer une clé symétrique gérée par le client**
+ Suivez les étapes décrites dans la [section Création d'une clé KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) dans le *guide du AWS Key Management Service développeur*.

### Stratégie de clé
<a name="custom-package-key-policy"></a>

Les stratégies de clé contrôlent l’accès à votre clé gérée par le client. Chaque clé gérée par le client doit avoir exactement une stratégie de clé, qui contient des instructions qui déterminent les personnes pouvant utiliser la clé et comment elles peuvent l’utiliser. Lorsque vous créez votre clé gérée par le client, vous pouvez spécifier une stratégie de clé. Pour plus d’informations, consultez [Politiques de clé dans AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) dans le *Guide du développeur AWS Key Management Service *.

Pour utiliser votre clé gérée par le client avec les ressources de votre plugin, vous devez autoriser les opérations d'API suivantes dans la politique des clés :
+ `kms:CreateGrant` : ajoute une attribution à une clé gérée par le client. Accorde un accès de contrôle à une AWS KMS clé spécifiée, permettant d'autoriser les opérations requises par les packages personnalisés du OpenSearch Service. Pour plus d'informations sur l'utilisation des subventions, consultez le [guide du AWS KMS développeur](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html).

  Cela permet au OpenSearch Service d'effectuer les opérations suivantes :
  + Appelez `GenerateDataKeyWithoutPlainText` pour générer une clé de données cryptée et la stocker pour d'autres validations.
  + Appelez `GenerateDataKey` pour copier le package du plugin en interne.
  + Appelez `Decrypt` pour accéder au package du plugin en interne.
  + Configurer un principal sortant pour permettre au service de `RetireGrant`.
+ `kms:DescribeKey`— Fournit les informations clés gérées par le client pour permettre au OpenSearch service de valider la clé.
+ `kms:GenerateDataKey`,`kms:GenerateDataKeyWithoutPlaintext`, `kms:Decrypt` — Permet aux packages personnalisés du OpenSearch Service d'utiliser ces opérations dans le cadre de la subvention.

Vous trouverez ci-dessous des exemples de déclarations de politique que vous pouvez ajouter pour les packages personnalisés de OpenSearch service :

```
"Statement" : [
  {
    "Sid" : "Allow access to principals authorized to use OpenSearch Service custom packages",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [
      "kms:CreateGrant",
      "kms:GenerateDataKey",
      "kms:GenerateDataKeyWithoutPlaintext",
      "kms:Decrypt"
    ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:ViaService" : "custom-packages.region.amazonaws.com"
      },
      "StringEquals" : {
        "kms:EncryptionContext:packageId": "Id of the package"
      }
    }
  },
  {
    "Sid" : "Allow access to principals authorized to use Amazon OpenSearch Service custom packages",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [
      "kms:DescribeKey"
    ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:ViaService" : "custom-packages.region.amazonaws.com"
      }
    }
  }
]
```

Pour plus d'informations sur la spécification des autorisations dans une politique, consultez la section [Politiques clés](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) du *Guide du AWS Key Management Service développeur*. AWS KMS

Pour plus d'informations sur la résolution des problèmes d'accès par clé, consultez la section [Résolution AWS KMS des problèmes liés aux autorisations](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html) dans le *Guide du AWS Key Management Service développeur*.

## Spécifiez une clé gérée par le client pour les packages personnalisés Amazon OpenSearch Service
<a name="custom-package-specify-cmk"></a>

Vous pouvez spécifier une clé gérée par le client comme deuxième couche de chiffrement pour vos `ZIP-PLUGIN` packages.

Lorsque vous créez un package de plug-in, vous pouvez spécifier la clé de données en saisissant un ID de AWS KMS clé, que les packages personnalisés du OpenSearch service utilisent pour chiffrer le package de plug-in.

*AWS KMS ID de clé* — Identifiant de clé pour une clé gérée par le AWS KMS client. Saisissez un ID de clé, un ARN de clé, un nom d’alias ou un ARN d’alias.

## Contexte de chiffrement des packages personnalisés Amazon OpenSearch Service
<a name="custom-package-encryption-context"></a>

Un contexte de chiffrement est un ensemble facultatif de paires clé-valeur qui contient des informations contextuelles supplémentaires sur les données.

AWS KMS utilise le contexte de chiffrement comme données authentifiées supplémentaires pour prendre en charge le chiffrement authentifié. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, AWS KMS lie le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez inclure le même contexte de chiffrement dans la demande.

### Contexte de chiffrement des packages personnalisés Amazon OpenSearch Service
<a name="custom-package-encryption-context-details"></a>

Les packages personnalisés Amazon OpenSearch Service utilisent le même contexte de chiffrement dans toutes les opérations AWS KMS cryptographiques, où la clé `packageId` et la valeur sont le package `package-id` de votre plugin.

### Utiliser le contexte de chiffrement pour la surveillance
<a name="custom-package-encryption-context-monitoring"></a>

Lorsque vous utilisez une clé symétrique gérée par le client pour chiffrer votre package de plug-in, vous pouvez utiliser le contexte de chiffrement dans les enregistrements d'audit et les journaux pour identifier la manière dont la clé gérée par le client est utilisée. Le contexte de chiffrement apparaît également dans les journaux générés par Amazon Logs AWS CloudTrail ou Amazon CloudWatch Logs.

### Contrôle de l’accès à votre clé gérée par le client à l’aide du contexte de chiffrement
<a name="custom-package-encryption-context-access-control"></a>

Vous pouvez utiliser le contexte de chiffrement dans les stratégies de clé et les politiques IAM en tant que conditions pour contrôler l’accès à votre clé symétrique gérée par le client. Vous pouvez également utiliser des contraintes de contexte de chiffrement dans un octroi.

OpenSearch Les packages personnalisés de service utilisent une contrainte de contexte de chiffrement dans les autorisations afin de contrôler l'accès à la clé gérée par le client dans votre compte ou votre région. La contrainte d’octroi exige que les opérations autorisées par l’octroi utilisent le contexte de chiffrement spécifié.

Vous trouverez ci-dessous des exemples d’instructions de stratégie de clé permettant d’accorder l’accès à une clé gérée par le client dans un contexte de chiffrement spécifique. La condition énoncée dans cette instruction de stratégie exige que les octrois comportent une contrainte de contexte de chiffrement qui spécifie le contexte de chiffrement.

```
{
    "Sid": "Enable DescribeKey",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
    },
    "Action": "kms:DescribeKey",
    "Resource": "*"
},
{
    "Sid": "Enable OpenSearch Service custom packages to use the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
    },
    "Action" : [
         "kms:CreateGrant",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals" : {
            "kms:EncryptionContext:packageId": "ID of the package"
         }
    }
}
```

## Surveillance de vos clés de chiffrement pour le service de packages OpenSearch personnalisés
<a name="custom-package-monitoring-keys"></a>

Lorsque vous utilisez une clé gérée par le AWS KMS client avec les ressources du OpenSearch service de packages personnalisés de votre service, vous pouvez utiliser CloudTrail or CloudWatch Logs pour suivre les demandes auxquelles les packages OpenSearch personnalisés sont envoyés AWS KMS.

**En savoir plus**  
Les ressources suivantes fournissent plus d'informations sur le chiffrement des données au repos.
+ Pour plus d'informations sur AWS KMS les concepts de base, consultez [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)le *guide du AWS Key Management Service développeur*.
+ Pour plus d'informations sur les meilleures pratiques de sécurité pour AWS KMS, consultez le *guide AWS prescriptif sur* les [AWS Key Management Service meilleures](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) pratiques.