Tutorial: Conceitos básicos de segurança no Amazon OpenSearch Sem Servidor (CLI) - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Conceitos básicos de segurança no Amazon OpenSearch Sem Servidor (CLI)

Este tutorial mostra as etapas descritas no tutorial de conceitos básicos do console para segurança, mas usa a AWS CLI em vez do console do OpenSearch Service.

Você concluirá as seguintes etapas neste tutorial:

  1. Criar uma política do IAM

  2. Anexar a política do IAM ao perfil do IAM

  3. Criar uma política de criptografia

  4. Criar uma política de rede

  5. Criar uma coleção

  6. Configurar uma política de acesso a dados

  7. Recuperar o endpoint da coleta

  8. Carregar dados para sua conexão

  9. Pesquisar dados em sua coleção

O objetivo deste tutorial é configurar uma única coleção do OpenSearch Sem Servidor com configurações bastante simples de criptografia, rede e acesso a dados. Por exemplo, configuraremos o acesso pela rede pública, uma Chave gerenciada pela AWS para criptografia e uma política simplificada de acesso a dados que concede permissões mínimas a um único usuário.

Em um cenário de produção, considere implementar uma configuração mais robusta, incluindo autenticação SAML, uma chave de criptografia personalizada e acesso pela VPC.

Conceitos básicos de políticas de segurança do OpenSearch Service
  1. nota

    É possível pular esta etapa se já estiver usando uma política baseada em identidade mais ampla, como Action":"aoss:*" ou Action":"*". Em ambientes de produção, no entanto, recomendamos que você siga o princípio do privilégio mínimo e atribua somente as permissões mínimas necessárias para concluir uma tarefa.

    Para iniciar, crie uma política AWS Identity and Access Management com as permissões mínimas necessárias para executar as etapas deste tutorial. Daremos o nome de TutorialPolicy à política:

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

    Exemplo de resposta

    { "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. Anexe TutorialPolicy ao perfil do IAM que indexará e pesquisará dados na coleção. Daremos o nome de TutorialRole ao usuário:

    aws iam attach-role-policy \ --role-name TutorialRole \ --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
  3. Antes de criar uma coleção, você precisa criar uma política de criptografia que atribua uma Chave pertencente à AWS à coleção livros que você criará em uma etapa posterior.

    Envie a seguinte solicitação para criar uma política de criptografia para a coleção livros:

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

    Exemplo de resposta

    { "securityPolicyDetail": { "type": "encryption", "name": "books-policy", "policyVersion": "MTY2OTI0MDAwNTk5MF8x", "policy": { "Rules": [ { "Resource": [ "collection/books" ], "ResourceType": "collection" } ], "AWSOwnedKey": true }, "createdDate": 1669240005990, "lastModifiedDate": 1669240005990 } }
  4. Crie uma política de rede que forneça acesso público à coleção livros:

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

    Exemplo de resposta

    { "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. Crie a coleção livros:

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

    Exemplo de resposta

    { "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. Crie uma política de acesso a dados que forneça as permissões mínimas para indexar e pesquisar dados na coleção livros. Substitua o ARN da entidade principal pelo ARN do TutorialRole da etapa 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\"]}]"

    Exemplo de resposta

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

    O TutorialRole agora deve ser capaz de indexar e pesquisar documentos na coleção livros.

  7. Para fazer chamadas para a API do OpenSearch, você precisará do endpoint da coleção. Envie a seguinte solicitação para recuperar o parâmetro collectionEndpoint:

    aws opensearchserverless batch-get-collection --names books

    Exemplo de resposta

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

    Não será possível ver o endpoint da coleção até que o status da coleção mude para ACTIVE. Talvez seja necessário fazer várias chamadas para verificar o status até que a coleção seja criada com êxito.

  8. Use uma ferramenta HTTP, como o Postman ou curl, para indexar dados na coleção livros. Criaremos um índice chamado books-index e adicionaremos um único documento.

    Envie a solicitação a seguir para o endpoint da coleção que você recuperou na etapa anterior, usando as credenciais do TutorialRole.

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

    Exemplo de resposta

    { "_index" : "books-index", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 0, "successful" : 0, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 0 }
  9. Para começar a pesquisar dados em sua coleção, use a API de pesquisa. A consulta a seguir executa uma pesquisa básica:

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

    Exemplo de resposta

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