View a markdown version of this page

Tutoriel : prise en main de la sécurité dans Amazon OpenSearch Serverless (CLI) - Amazon OpenSearch Service

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.

Tutoriel : prise en main de la sécurité dans Amazon OpenSearch Serverless (CLI)

Ce didacticiel couvre les étapes décrites dans le didacticiel de démarrage de la console pour la sécurité, mais utilise la console AWS CLI plutôt que la console OpenSearch de service.

Dans ce didacticiel, vous devez suivre les étapes suivantes :

  1. Création d'une politique d'autorisations IAM

  2. Associer la politique IAM à un rôle IAM

  3. Créer une politique de chiffrement

  4. Création d'une stratégie réseau

  5. Créer une collection

  6. Configuration d'une stratégie d'accès aux données

  7. Récupérer le point de terminaison de collecte

  8. Téléchargez des données dans votre collection

  9. Rechercher des données dans votre collection

L'objectif de ce didacticiel est de configurer une collection unique OpenSearch sans serveur avec des paramètres de chiffrement, de réseau et d'accès aux données assez simples. Par exemple, vous configurez l'accès au réseau public, un Clé gérée par AWS chiffrement et une politique d'accès aux données simplifiée qui accorde des autorisations minimales à un seul utilisateur.

Dans un scénario de production, envisagez de mettre en œuvre une configuration plus robuste, notamment une authentification SAML, une clé de chiffrement personnalisée et un accès VPC.

Pour commencer à utiliser les politiques de sécurité dans OpenSearch Serverless
  1. Note

    Vous pouvez ignorer cette étape si vous utilisez déjà une politique basée sur l'identité plus large, telle que Action":"aoss:*" ou Action":"*". Dans les environnements de production, toutefois, suivez le principe du moindre privilège et n'attribuez que les autorisations minimales nécessaires pour effectuer une tâche.

    Pour commencer, créez une Gestion des identités et des accès AWS politique avec les autorisations minimales requises pour effectuer les étapes de ce didacticiel. Donnez un nom à la politique 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\": \"*\"}]}"

    Exemple de réponse

    { "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" } }
  2. Attachez TutorialPolicy au rôle IAM qui indexera et recherchera les données dans la collection. Dans cet exemple, le rôle est nommé TutorialRole :

    aws iam attach-role-policy \ --role-name TutorialRole \ --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
  3. Avant de créer une collection, vous devez créer une politique de chiffrement qui attribue un Clé détenue par AWS à la collection de livres que vous créerez ultérieurement.

    Envoyez la requête suivante afin de créer une stratégie de chiffrement pour la collection books :

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

    Exemple de réponse

    { "securityPolicyDetail": { "type": "encryption", "name": "books-policy", "policyVersion": "MTY2OTI0MDAwNTk5MF8x", "policy": { "Rules": [ { "Resource": [ "collection/books" ], "ResourceType": "collection" } ], "AWSOwnedKey": true }, "createdDate": 1669240005990, "lastModifiedDate": 1669240005990 } }
  4. Créez une stratégie réseau qui fournit un accès public à la collection books :

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

    Exemple de réponse

    { "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 } }
  5. Créez la collection books :

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

    Exemple de réponse

    { "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 } }
  6. Créez une stratégie d'accès aux données qui fournit les autorisations minimales nécessaires pour indexer et rechercher des données dans la collection books. Remplacez l'ARN du principal par l'ARN du TutorialRole de l'étape 1 :

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

    Exemple de réponse

    { "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 devrait désormais pouvoir indexer et rechercher des documents dans la collection books.

  7. Pour appeler l' OpenSearch API, vous avez besoin du point de terminaison de collecte. Envoyez la requête suivante pour récupérer le paramètre collectionEndpoint :

    aws opensearchserverless batch-get-collection --names books

    Exemple de réponse

    { "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": [] }
    Note

    Le point de terminaison de collecte n'est pas disponible tant que le statut de la collecte n'est pas passé àACTIVE. Il se peut que vous deviez effectuer plusieurs appels pour vérifier le statut jusqu'à ce que la collection soit correctement créée.

  8. Utilisez un outil HTTP tel que Postman ou curl pour indexer les données dans la collection books. L'exemple suivant crée un index appelé books-index et ajoute un seul document.

    Envoyez la requête suivante au point de terminaison de collection que vous avez récupéré à l'étape précédente, à l'aide des informations d'identification de TutorialRole.

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

    Exemple de réponse

    { "_index" : "books-index", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 0, "successful" : 0, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 0 }
  9. Pour commencer à rechercher des données dans votre collection, utilisez l'API de recherche. La requête suivante permet d'effectuer une recherche de base :

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

    Exemple de réponse

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