Exemples de politiques basées sur les ressources pour AWS Glue - AWS Glue

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de politiques basées sur les ressources pour AWS Glue

Cette section contient des exemples de politiques basées sur les ressources, y compris les politiques qui accordent l'accès intercompte.

Les exemples utilisent l'AWS Command Line Interface (AWS CLI) pour interagir avec les opérations d'API de service AWS Glue. Vous pouvez effectuer les mêmes opérations sur la console AWS Glue ou en utilisant l'un des kits SDK AWS.

Important

En modifiant une politique de ressource AWS Glue, vous pouvez accidentellement annuler les autorisations des utilisateurs AWS Glue existants dans votre compte et provoquer des interruptions inattendues. Essayez ces exemples uniquement dans les comptes de développement ou de test et assurez-vous qu'ils n'interrompent aucun workflow existant avant d'apporter des modifications.

Considérations relatives à l'utilisation de politiques basées sur les ressources avec AWS Glue

Note

Les politiques IAM et la politique de ressource AWS Glue prennent quelques secondes pour être appliquées. Une fois que vous avez attaché une nouvelle politique, vous pouvez remarquer que l'ancienne politique est toujours en vigueur jusqu'à ce que la nouvelle politique ait été appliquée à tout le système.

Vous utilisez un document de politique écrit au format JSON pour créer ou modifier une politique de ressource. La syntaxe de la politique est la même que pour une politique IAM basée sur l'identité (veuillez consulter la Référence de politique JSON IAM), avec les exceptions suivantes :

  • Un bloc "Principal" ou "NotPrincipal" est requis pour chaque déclaration de politique.

  • Le "Principal" ou "NotPrincipal" doit identifier les principaux existants valides. Les modèles de caractères génériques (tels que arn:aws:iam::account-id:user/*) ne sont pas autorisés.

  • Le bloc "Resource" de la politique exige que tous les ARN de ressource correspondent à la syntaxe d'expression régulière suivante (où le premier %s correspond à la région et le deuxième %s à account-id) :

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

    Par exemple, arn:aws:glue:us-west-2:account-id:* et arn:aws:glue:us-west-2:account-id:database/default sont autorisés, mais * est pas autorisé.

  • Contrairement aux politiques basées sur l'identité, une politique de ressources AWS Glue doit uniquement contenir les Amazon Resource Names (ARN) des ressources appartenant au catalogue auquel la politique est attachée. Ces ARN commencent toujours par arn:aws:glue:.

  • Une politique ne peut pas faire en sorte que l'identité qui la crée ne puisse pas créer ou modifier de politiques.

  • La taille d'un document JSON de politique de ressource ne peut pas dépasser 10 Ko.

Utiliser une politique de ressource pour contrôler l'accès dans le même compte

Dans cet exemple, un utilisateur administrateur du Compte A crée une politique de ressource qui accorde à l'utilisateur IAM Alice du Compte A un accès complet au catalogue. Alice n'a aucune politique IAM attachée.

Pour cela, l'utilisateur administrateur exécute la commande AWS CLI suivante.

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

Au lieu d'entrer le document de politique JSON dans le cadre de votre commande AWS CLI, vous pouvez enregistrer un document de politique dans un fichier et référencer le chemin d'accès au fichier dans la commande AWS CLI, préfixée par file://. Voici un exemple de la façon dont vous pourriez procéder :

$ 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

Une fois que cette politique de ressource a été propagée, Alice peut accéder à toutes les ressources AWS Glue du Compte A, comme suit.

# 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 réponse à l'appel get-table d'Alice, le service AWS Glue renvoie ce qui suit.

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