Tutorial: Guida introduttiva alla sicurezza in Amazon OpenSearch Serverless (CLI) - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: Guida introduttiva alla sicurezza in Amazon OpenSearch Serverless (CLI)

Questo tutorial illustra i passaggi descritti nel tutorial introduttivo per la sicurezza della console, ma utilizza la console di servizio AWS CLI anziché la console di OpenSearch servizio.

In questo tutorial completerai le seguenti fasi:

  1. Crea una politica di autorizzazioni IAM

  2. Associa la policy IAM a un ruolo IAM

  3. Creare una policy di crittografia

  4. Creazione di una policy di rete

  5. Creare una raccolta

  6. Configurazione di una policy di accesso ai dati

  7. Recupera l'endpoint di raccolta

  8. Carica i dati sulla tua connessione

  9. Cerca i dati nella tua raccolta

L'obiettivo di questo tutorial è configurare un'unica raccolta OpenSearch Serverless con impostazioni di crittografia, rete e accesso ai dati abbastanza semplici. Ad esempio, configureremo l'accesso alla rete pubblica, una Chiave gestita da AWS per la crittografia e una policy di accesso ai dati semplificata che concede autorizzazioni minime a un singolo utente.

In uno scenario di produzione, ti consigliamo di implementare una configurazione più affidabile, che includa l'autenticazione SAML, una chiave di crittografia personalizzata e l'accesso al VPC.

Per iniziare con le politiche di sicurezza in Serverless OpenSearch
  1. Nota

    Puoi saltare questa fase se stai già utilizzando una policy più ampia basata sull'identità, ad esempio Action":"aoss:*" o Action":"*". Negli ambienti di produzione, tuttavia, si consiglia di seguire il principio del privilegio minimo e di assegnare solo le autorizzazioni minime necessarie per completare un'attività.

    Per iniziare, crea una policy AWS Identity and Access Management con le autorizzazioni minime necessarie per seguire le fasi di questo tutorial. Denomineremo la policy 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\": \"*\"}]}"

    Risposta di esempio

    { "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. Allega la TutorialPolicy al ruolo IAM che indicizzerà e cercherà i dati nella raccolta. Denomineremo l'utente TutorialRole:

    aws iam attach-role-policy \ --role-name TutorialRole \ --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
  3. Prima di creare una raccolta, è necessario creare una policy di crittografia che assegni una Chiave di proprietà di AWS alla raccolta books che creerai in una fase successiva.

    Invia la seguente richiesta per creare una policy di crittografia per la raccolta books:

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

    Risposta di esempio

    { "securityPolicyDetail": { "type": "encryption", "name": "books-policy", "policyVersion": "MTY2OTI0MDAwNTk5MF8x", "policy": { "Rules": [ { "Resource": [ "collection/books" ], "ResourceType": "collection" } ], "AWSOwnedKey": true }, "createdDate": 1669240005990, "lastModifiedDate": 1669240005990 } }
  4. Crea una policy di rete che fornisca l'accesso pubblico alla raccolta 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}]"

    Risposta di esempio

    { "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. Crea la raccolta books:

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

    Risposta di esempio

    { "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. Crea una policy di accesso ai dati che fornisca le autorizzazioni minime per indicizzare e cercare i dati nella raccolta books. Sostituisci l'ARN principale con l'ARN del TutorialRole dalla fase 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\"]}]"

    Risposta di esempio

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

    Ora TutorialRole dovrebbe essere in grado di indicizzare e cercare documenti nella raccolta books.

  7. Per effettuare chiamate all' OpenSearch API, è necessario l'endpoint di raccolta. Invia la seguente richiesta per recuperare il parametro collectionEndpoint:

    aws opensearchserverless batch-get-collection --names books

    Risposta di esempio

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

    Non sarà possibile visualizzare l'endpoint della nuova raccolta fino a quando lo stato della nuova raccolta non sarà ACTIVE. Potrebbe essere necessario effettuare più chiamate per verificare lo stato fino a quando la raccolta non viene creata correttamente.

  8. Usa uno strumento HTTP come Postman o curl per indicizzare i dati nella raccolta books. Creeremo un indice denominato books-index e aggiungeremo un singolo documento.

    Invia la richiesta seguente all'endpoint di raccolta recuperato nella fase precedente, utilizzando le credenziali del TutorialRole.

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

    Risposta di esempio

    { "_index" : "books-index", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 0, "successful" : 0, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 0 }
  9. Per iniziare a cercare i dati nella raccolta, usa l'API di ricerca. La seguente query esegue una ricerca di base:

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

    Risposta di esempio

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