Tutorial: Introducción a la seguridad en Amazon OpenSearch sin servidor (CLI) - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Introducción a la seguridad en Amazon OpenSearch sin servidor (CLI)

Este tutorial explica los pasos descritos en el tutorial de Introducción a la consola sobre seguridad, pero utiliza AWS CLI en lugar de la consola de OpenSearch Service.

En este tutorial, deberá completar los siguientes pasos:

  1. Creación de una política de permisos de IAM

  2. Anexo de la política de IAM a un rol de IAM

  3. Crear una política de cifrado

  4. Crear una política de red

  5. Crear una recopilación

  6. Configurar la política de acceso a datos

  7. Recuperación del punto de conexión de la colección

  8. Carga de los datos a su conexión

  9. Búsqueda de datos en su colección

El objetivo de este tutorial es configurar una única colección de OpenSearch sin servidor con configuraciones de cifrado, red y acceso a datos bastante simples. Por ejemplo, configuraremos el acceso a la red pública, el cifrado Clave administrada de AWS y una política de acceso a datos simplificada que otorgue permisos mínimos a un solo usuario.

En un escenario de producción, considere implementar una configuración más robusta, incluyendo autenticación SAML, una clave de cifrado personalizada y acceso VPC.

Para empezar con las políticas de seguridad en OpenSearch sin servidor
  1. nota

    Puedes omitir este paso si ya utilizas una política más amplia basada en la identidad, como Action":"aoss:*" o Action":"*". Sin embargo, en entornos de producción, le recomendamos que siga la entidad principal del privilegio mínimo y solo asigne los permisos mínimos necesarios para completar una tarea.

    Para empezar, cree una política AWS Identity and Access Management con los permisos mínimos necesarios para realizar los pasos de este tutorial. Le pondremos a la política el siguiente nombre 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\": \"*\"}]}"

    Respuesta de ejemplo

    { "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. Asocie TutorialPolicy al rol de IAM que indexará y buscará datos en la colección. Le pondremos al usuario el siguiente nombre TutorialRole:

    aws iam attach-role-policy \ --role-name TutorialRole \ --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
  3. Antes de crear una colección, debe crear una política de cifrado que asigne una Clave propiedad de AWS a la colección de libros que creará en un paso posterior.

    Envíe la siguiente solicitud para crear una política de cifrado para la colección de libros:

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

    Respuesta de ejemplo

    { "securityPolicyDetail": { "type": "encryption", "name": "books-policy", "policyVersion": "MTY2OTI0MDAwNTk5MF8x", "policy": { "Rules": [ { "Resource": [ "collection/books" ], "ResourceType": "collection" } ], "AWSOwnedKey": true }, "createdDate": 1669240005990, "lastModifiedDate": 1669240005990 } }
  4. Cree una política de red que proporcione acceso público a la colección de libros:

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

    Respuesta de ejemplo

    { "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 colección de libros:

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

    Respuesta de ejemplo

    { "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. Cree una política de acceso a datos que proporcione los permisos mínimos para indexar y buscar datos en la colección de libros. Reemplace entidad principal de ARN por el ARN de TutorialRole del paso 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\"]}]"

    Respuesta de ejemplo

    { "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 ahora debería poder indexar y buscar documentos en la colección de libros.

  7. Para realizar llamadas a la API de OpenSearch, necesita el punto de conexión de la colección. Envíe la siguiente solicitud para recuperar el parámetro collectionEndpoint:

    aws opensearchserverless batch-get-collection --names books

    Respuesta de ejemplo

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

    No podrá ver el punto de conexión de la colección hasta que el estado de la colección cambie a ACTIVE. Puede que tenga que hacer varias llamadas para comprobar el estado hasta que la colección se haya creado de forma correcta.

  8. Utilice una herramienta HTTP como Postman o curl para indexar los datos de la colección de libros. Crearemos un índice llamado books-index y agregaremos un solo documento.

    Envíe la siguiente solicitud al punto de conexión de la colección que recuperó en el paso anterior, con las credenciales TutorialRole.

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

    Respuesta de ejemplo

    { "_index" : "books-index", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 0, "successful" : 0, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 0 }
  9. Para empezar a buscar datos en tu colección, utilice la API de búsqueda. La siguiente consulta representa una búsqueda básica:

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

    Respuesta de ejemplo

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