Ejemplos de políticas basadas en recursos para AWS Glue - AWS Glue

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.

Ejemplos de políticas basadas en recursos para AWS Glue

Esta sección contiene ejemplos de políticas basadas en recursos, incluidas las políticas que conceden acceso entre cuentas.

Los ejemplos utilizan la AWS Command Line Interface (AWS CLI) para interactuar con las operaciones de API del servicio AWS Glue. Puede realizar las mismas operaciones en la consola de AWS Glue o mediante uno de los SDK de AWS.

importante

Al cambiar una política de recursos de AWS Glue, puede revocar accidentalmente permisos de los usuarios existentes de AWS Glue en su cuenta y causar interrupciones inesperadas. Pruebe estos ejemplos únicamente en las cuentas de desarrollo o prueba y asegúrese de que no rompen ningún flujo de trabajo existente antes de realizar los cambios.

Consideraciones para el uso de políticas basadas en recursos con AWS Glue

nota

Tanto las políticas de IAM como una política de recursos de AWS Glue tardan unos segundos en propagarse. Después de asociar una nueva política, es posible que observe que la política anterior sigue en vigor hasta que la nueva política se haya propagado por el sistema.

Puede utilizar un documento de política escrito en formato JSON para crear o modificar una política de recursos. La sintaxis de la política es la misma que para una política de IAM basada en identidades (consulte Referencia de políticas JSON de IAM), con las siguientes excepciones:

  • Un bloque "Principal" o "NotPrincipal" es obligatorio para cada instrucción de política.

  • "Principal" o "NotPrincipal" deben identificar a las entidades principales válidas. Los patrones de comodín (como arn:aws:iam::account-id:user/*) no están permitidos.

  • El bloque "Resource" en la política requiere que todos los ARN de recursos se correspondan con la siguiente sintaxis de expresiones regulares (donde el primer %s es la región y el segundo %s es el ID de cuenta):

    *arn:aws:glue:%s:%s:(\*|[a-zA-Z\*]+\/?.*)

    Por ejemplo, arn:aws:glue:us-west-2:account-id:* y arn:aws:glue:us-west-2:account-id:database/default están permitidos, pero * no está permitido.

  • A diferencia de las políticas basadas en identidades, una política de recursos de AWS Glue solo debe contener nombres de recursos de Amazon (ARN) que pertenecen al catálogo al que se asocia dicha política. Estos ARN siempre empiezan por arn:aws:glue:.

  • Una política no puede impedir que la identidad que la cree genere o modifique otras políticas.

  • Un documento JSON de política de recursos no puede superar los 10 KB de tamaño.

Uso de una política de recursos para controlar el acceso en la misma cuenta

En este ejemplo, un usuario administrador en la cuenta A crea una política de recursos que concede al usuario de IAM, Alice, de la cuenta A un acceso completo al catálogo. Alice no tiene ninguna política de IAM asociada.

Para ello, el usuario administrador ejecuta el siguiente comando de la AWS CLI.

# Run as admin of Account A $ aws glue put-resource-policy --profile administrator-name --region us-west-2 --policy-in-json '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }'

En lugar de especificar el documento de política JSON como parte de su comando de AWS CLI, puede guardar un documento de política en un archivo y hacer referencia a la ruta del archivo en el comando de AWS CLI, con el prefijo file://. A continuación, se muestra un ejemplo de cómo podría hacerlo.

$ echo '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }' > /temp/policy.json $ aws glue put-resource-policy --profile admin1 \ --region us-west-2 --policy-in-json file:///temp/policy.json

Después de que esta política de recurso se haya propagado, Alice puede acceder a todos los recursos de AWS Glue de la cuenta A; de la siguiente manera.

# Run as user Alice $ aws glue create-database --profile alice --region us-west-2 --database-input '{ "Name": "new_database", "Description": "A new database created by Alice", "LocationUri": "s3://my-bucket" }' $ aws glue get-table --profile alice --region us-west-2 --database-name "default" --table-name "tbl1"}

En respuesta a la llamada get-table de Alice, el servicio de AWS Glue devuelve lo siguiente.

{ "Table": { "Name": "tbl1", "PartitionKeys": [], "StorageDescriptor": { ...... }, ...... } }