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: Introdução à segurança no Amazon OpenSearch Serverless (CLI)
Este tutorial orienta você pelas etapas descritas no tutorial de introdução do console sobre segurança, mas usa o console AWS CLI em vez do OpenSearch Service console.
Você concluirá as seguintes etapas neste tutorial:
-
Criar uma política do IAM
-
Anexar a política do IAM ao perfil do IAM
-
Criar uma política de criptografia
-
Criar uma política de rede
-
Criar uma coleção
-
Configurar uma política de acesso a dados
-
Recuperar o endpoint da coleta
-
Carregar dados para sua conexão
-
Pesquisar dados em sua coleção
O objetivo deste tutorial é configurar uma única coleção OpenSearch Serverless com configurações bastante simples de criptografia, rede e acesso a dados. Por exemplo, configuraremos o acesso à 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.
Para começar a usar as políticas de segurança no OpenSearch Serverless
-
nota
É possível pular esta etapa se já estiver usando uma política baseada em identidade mais ampla, como
Action":"aoss:*"
ouAction":"*"
. Em ambientes de produção, no entanto, recomendamos que você siga a entidade principal do privilégio mínimo e atribua somente as permissões mínimas necessárias para concluir uma tarefa.Para começar, crie uma AWS Identity and Access Management política 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" } } -
Anexe
TutorialPolicy
ao perfil do IAM que indexará e pesquisará dados na coleção. Daremos o nome deTutorialRole
ao usuário:aws iam attach-role-policy \ --role-name
TutorialRole
\ --policy-arn arn:aws:iam::123456789012
:policy/TutorialPolicy -
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 } }
-
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 } }
-
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 } }
-
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. -
Para fazer chamadas para a OpenSearch API, você precisa 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. -
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 }
-
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/_searchExemplo 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 } } ] } }