Control de acceso a los datos para Amazon OpenSearch sin servidor - 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.

Control de acceso a los datos para Amazon OpenSearch sin servidor

Con el control de acceso a los datos de Amazon OpenSearch sin servidor, puede permitir que los usuarios accedan a las colecciones e índices, sin importar su origen de red o mecanismo de acceso. Puede proporcionar acceso a roles de IAM e identidades SAML.

Los permisos de acceso se administran mediante las políticas de acceso a los datos, que se aplican a las colecciones y a los recursos de índice. Las políticas de acceso a datos le ayudan a administrar las colecciones a escala mediante la asignación automática de permisos de acceso a las colecciones e índices que coinciden con un patrón específico. Se pueden aplicar varias políticas de acceso a los datos a un solo recurso. Tenga en cuenta que debe tener una política de acceso a los datos para su colección a fin de acceder a la URL de OpenSearch Dashboards.

Políticas de acceso a datos frente a políticas de IAM

Las políticas de acceso a los datos están separadas de forma lógica de las políticas AWS Identity and Access Management (IAM). Los permisos de IAM controlan el acceso a las operaciones de la API sin servidor, como CreateCollection y ListAccessPolicies. Las políticas de acceso a los datos controlan el acceso a las operaciones de OpenSearch que admite OpenSearch sin servidor, como PUT <index> o GET _cat/indices.

Los permisos de IAM que controlan el acceso a las operaciones de la API de la política de acceso a los datos, como aoss:CreateAccessPolicy y aoss:GetAccessPolicy (que se describen en la siguiente sección), no afectan al permiso especificado en una política de acceso a los datos.

Por ejemplo, supongamos que una política de IAM niega a un usuario crear políticas de acceso a los datos para collection-a, pero le permite crear políticas de acceso a datos para todas las colecciones (*):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "aoss:CreateAccessPolicy" ], "Resource": "*", "Condition": { "StringLike": { "aoss:collection": "collection-a" } } }, { "Effect": "Allow", "Action": [ "aoss:CreateAccessPolicy" ], "Resource": "*" } ] }

Si el usuario crea una política de acceso a los datos que permite ciertos permisos a todas las colecciones (collection/* o index/*/*), la política se aplicará a todas las colecciones, incluida la colección A.

importante

Contar con permisos dentro de una política de acceso a datos no es suficiente para acceder a los datos de la colección de OpenSearch sin servidor. A una entidad principal también se le debe conceder acceso a los permisos de IAM aoss:APIAccessAll y aoss:DashboardsAccessAll. Ambos permisos conceden acceso completo a los recursos de la colección, mientras que el permiso de los paneles también permite el acceso a OpenSearch Dashboards. Si una entidad principal no tiene estos dos permisos de IAM, recibirá errores 403 cuando intente enviar solicitudes a la colección. Para obtener más información, consulte Uso de operaciones OpenSearch API.

Permisos de IAM necesarios para configurar las políticas de acceso a los datos

El control de acceso a los datos para OpenSearch sin servidor utiliza los siguientes permisos de IAM. Puede especificar las condiciones de IAM para restringir a los usuarios a nombres de políticas de acceso específicos.

  • aoss:CreateAccessPolicy: cree una política de acceso.

  • aoss:ListAccessPolicies: enumere todas las políticas de acceso.

  • aoss:GetAccessPolicy: consulte los detalles sobre una política de acceso específica.

  • aoss:UpdateAccessPolicy: modifique una política de acceso.

  • aoss:DeleteAccessPolicy: elimine una política de acceso.

La siguiente política de acceso basada en la identidad permite al usuario ver todas las políticas de acceso y actualizar las políticas que contienen el patrón de recursos collection/logs.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:ListAccessPolicies", "aoss:GetAccessPolicy" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "aoss:UpdateAccessPolicy" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": [ "logs" ] } } } ] }
nota

Además, OpenSearch sin servidor requiere los permisos aoss:APIAccessAll y aoss:DashboardsAccessAll para los recursos de la colección. Para obtener más información, consulte Uso de operaciones OpenSearch API.

Sintaxis de la política

Una política de acceso a datos incluye un conjunto de reglas, cada una con los siguientes elementos:

Elemento Descripción
ResourceType El tipo de recurso (colección o índice) al que se le aplican los permisos. Los permisos de alias y plantillas se encuentran en el nivel de la colección, mientras que los permisos para crear, modificar y buscar datos están en el nivel del índice. Para más información, consulte Permisos de políticas compatibles.
Resource Una lista de nombres o patrones de recursos. Los patrones son prefijos seguidos de un comodín (*), que permiten que los permisos asociados se apliquen a varios recursos.
  • Las colecciones adoptan el formato collection/<name|pattern>.

  • Los índices toman el formato index/<collection-name|pattern>/<index-name|pattern/>.

Permission Una lista de permisos a otorgar para los recursos especificados. Para obtener una lista completa de las operaciones de la API y de los permisos que permiten, consulte Permisos y operaciones de la API de OpenSearch.
Principal Una lista de una o más entidades principales a las que conceder acceso. Las entidades principales pueden ser ARN de roles de IAM o identidades SAML. Estas entidades principales deben estar dentro de la Cuenta de AWS actual. Las políticas de acceso a los datos no admiten directamente el acceso entre cuentas, pero puede incluir en la política un rol que pueda asumir un usuario de otra Cuenta de AWS en la cuenta propietaria de la colección. Para obtener más información, consulte Acceso a los datos entre cuentas.

La siguiente política de ejemplo otorga permisos de alias y plantillas a la colección llamada autopartsinventory, así como a cualquier colección que comience por el prefijo sales*. También otorga permisos de lectura y escritura a todos los índices dentro de la colección autopartsinventory y a todos los índices de la colección salesorders que comiencen por el prefijo orders*.

[ { "Description": "Rule 1", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ], "Permission":[ "aoss:CreateCollectionItems", "aoss:UpdateCollectionItems", "aoss:DescribeCollectionItems" ] }, { "ResourceType":"index", "Resource":[ "index/autopartsinventory/*", "index/salesorders/orders*" ], "Permission":[ "aoss:*" ] } ], "Principal":[ "arn:aws:iam::123456789012:user/Dale", "arn:aws:iam::123456789012:role/RegulatoryCompliance", "saml/123456789012/myprovider/user/Annie", "saml/123456789012/anotherprovider/group/Accounting" ] } ]

No se puede denegar el acceso de forma explícita dentro de una política. Por lo tanto, todos los permisos de la política son aditivos. Por ejemplo, si una política concede el permiso aoss:ReadDocument a un usuario y otra aoss:WriteDocument, el usuario tendrá ambos permisos. Si una tercera política concede al mismo usuario el permiso aoss:*, el usuario puede realizar todas las acciones del índice asociado; los permisos más restrictivos no anulan los menos restrictivos.

Permisos de política compatibles

Las políticas de acceso a los datos admiten los siguientes permisos. Para conocer las operaciones de la API de OpenSearch que permite cada permiso, consulte Permisos y operaciones de la API de OpenSearch.

Permisos de colección

  • aoss:CreateCollectionItems

  • aoss:DeleteCollectionItems

  • aoss:UpdateCollectionItems

  • aoss:DescribeCollectionItems

  • aoss:*

Permisos de índice

  • aoss:ReadDocument

  • aoss:WriteDocument

  • aoss:CreateIndex

  • aoss:DeleteIndex

  • aoss:UpdateIndex

  • aoss:DescribeIndex

  • aoss:*

Ejemplos de conjuntos de datos en OpenSearch Dashboards

OpenSearch Dashboards proporcionan conjuntos de datos de ejemplo que incluyen visualizaciones, paneles y otras herramientas para ayudarlo a explorar Dashboards antes de agregar sus propios datos. Para crear índices a partir de estos datos de ejemplo, necesita una política de acceso a los datos que otorgue permisos al conjunto de datos con el que desee trabajar. La siguiente política usa un comodín (*) para proporcionar permisos a los tres conjuntos de datos de ejemplo.

[ { "Rules": [ { "Resource": [ "index/<collection-name>/opensearch_dashboards_sample_data_*" ], "Permission": [ "aoss:CreateIndex", "aoss:DescribeIndex", "aoss:ReadDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::<account-id>:user/<user>" ] } ]

Creación de políticas de acceso a los datos (consola)

Puede crear una política de acceso a los datos con el editor visual o en el formato JSON. A cualquier colección nueva que coincida con uno de los patrones definidos en la política se le asignarán los permisos correspondientes al crear la colección.

Para crear una política de acceso a los datos de OpenSearch sin servidor
  1. Abra la consola de Amazon OpenSearch Service en https://console.aws.amazon.com/aos/home.

  2. En el panel de navegación izquierdo, expanda Sin servidor y seleccione Control de acceso a los datos.

  3. Seleccione Crear política de acceso.

  4. Escriba un nombre y una descripción para la política.

  5. Proporcione un nombre para la primera regla de la política. Por ejemplo, “Acceso a la colección de registros”.

  6. Seleccione Agregar entidades principales, y luego uno o varios roles de IAM o usuarios y grupos de SAML para proporcionarles acceso a los datos.

    nota

    Para seleccionar las entidades principales desde los menús desplegables, debe tener los permisos iam:ListUsers y iam:ListRoles (para las entidades principales de IAM) y el permiso aoss:ListSecurityConfigs (para las identidades de SAML).

  7. Seleccione Otorgar y seleccione los permisos de alias, plantillas e índices que desea conceder a las entidades principales asociadas. Para obtener una lista completa de los permisos y el acceso que permiten, consulte Permisos y operaciones de la API de OpenSearch.

  8. (Opcional) Configure reglas adicionales para la política.

  9. Seleccione Crear. Puede transcurrir alrededor de un minuto de retardo entre el momento en que se crea la política y el momento en el que se aplican los permisos. Si tarda más de 5 minutos, póngase en contacto con AWS Support.

importante

Si la política solo incluye permisos de índices (y no permisos de colecciones), es posible que siga apareciendo un mensaje sobre las colecciones coincidentes que indique lo siguiente: Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection. Puede omitir esta advertencia. Las entidades principales autorizadas pueden seguir realizando las operaciones relacionadas con índices que tengan asignadas en la colección.

Creación de políticas de acceso a los datos (AWS CLI)

Para crear una política de acceso a los datos mediante la API de OpenSearch sin servidor, utilice el comando CreateAccessPolicy. El comando acepta políticas insertadas y archivos .json. Las políticas insertadas deben codificarse como una cadena de escape de JSON.

La siguiente solicitud crea una política de acceso a los datos:

aws opensearchserverless create-access-policy \ --name marketing \ --type data \ --policy "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]"

Para proporcionar la política dentro de un archivo .json, utilice el formato --policy file://my-policy.json.

Las entidades principales incluidas en la política ahora pueden usar las operaciones de OpenSearch a las que se les concedió acceso.

Visualización de políticas de acceso a los datos

Antes de crear una colección, puede que desee obtener una vista previa de las políticas de acceso a los datos existentes en la cuenta para ver cuáles tienen un patrón de recursos que coincide con el nombre de su colección. La siguiente solicitud de ListAccessPolicies enumera todas las políticas de acceso a los datos en su cuenta:

aws opensearchserverless list-access-policies --type data

La solicitud devuelve información sobre todas las políticas de acceso a los datos configuradas. Para ver las reglas de patrón definidas en una política específica, busque la información de la política en el contenido del elemento accessPolicySummaries en la respuesta. Anote el name y type de esta política y utilice estas propiedades en una solicitud de GetAccessPolicy para recibir una respuesta con los siguientes detalles de la política:

{ "accessPolicyDetails": [ { "type": "data", "name": "my-policy", "policyVersion": "MTY2NDA1NDE4MDg1OF8x", "description": "My policy", "policy": "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]", "createdDate": 1664054180858, "lastModifiedDate": 1664054180858 } ] }

Puede incluir filtros de recursos para limitar los resultados a políticas que contengan colecciones o índices específicos:

aws opensearchserverless list-access-policies --type data --resource "index/autopartsinventory/*"

Para ver los detalles de una política específica, utilice el comando GetAccessPolicy.

Actualización de las políticas de acceso a los datos

Al actualizar una política de acceso a los datos, todas las colecciones asociadas se ven afectadas. Para actualizar una política de acceso a datos en la consola de OpenSearch sin servidor, seleccione Control de acceso a los datos, seleccione la política que desee modificar y seleccione Editar. Realice los cambios y elija Guardar.

Para actualizar una política de acceso a los datos mediante la API de OpenSearch sin servidor, envíe la solicitud UpdateAccessPolicy. Debe incluir una versión de la política, que puede recuperar mediante los comandos ListAccessPolicies or GetAccessPolicy. Incluir la versión más reciente de la política garantiza que no se anule inadvertidamente un cambio realizado por otra persona.

La siguiente solicitud de UpdateAccessPolicy actualiza una política de acceso a los datos con un nuevo documento de política JSON:

aws opensearchserverless update-access-policy \ --name sales-inventory \ --type data \ --policy-version MTY2NDA1NDE4MDg1OF8x \ --policy file://my-new-policy.json

Pueden transcurrir unos minutos de retardo entre el momento en que se actualiza la política y el momento en que se aplican los nuevos permisos.

Eliminación de políticas de acceso a los datos

Al eliminar una política de acceso a los datos, todas las colecciones asociadas pierden el acceso definido en la política. Asegúrese de que sus usuarios de IAM y SAML tengan el acceso adecuado a la colección antes de eliminar una política. Para eliminar una política en la consola de OpenSearch sin servidor, seleccione la política y elija Eliminar.

También puede utilizar el comando DeleteAccessPolicy:

aws opensearchserverless delete-access-policy --name my-policy --type data

Acceso a los datos entre cuentas

Si bien no puede crear una política de acceso a los datos con identidades o colecciones entre cuentas, sí puede configurar el acceso entre cuentas con la opción de asumir un rol. Por ejemplo, si la account-a es propietaria de una colección a la que la account-b necesita acceso, el usuario de la account-b puede asumir un rol en la account-a. El rol debe tener los permisos de IAM aoss:APIAccessAll y aoss:DashboardsAccessAll y estar incluido en la política de acceso a los datos de la account-a.