Exemples de politiques basées sur l'identité pour Glue AWS - 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 l'identité pour Glue AWS

Par défaut, les utilisateurs et les rôles ne sont pas autorisés à créer ou à modifier les ressources AWS Glue. Ils ne peuvent pas non plus effectuer de tâches à l'aide de l'API AWS Management Console, AWS Command Line Interface (AWS CLI) ou de AWS l'API. Pour octroyer aux utilisateurs des autorisations d’effectuer des actions sur les ressources dont ils ont besoin, un administrateur IAM peut créer des politiques IAM. L’administrateur peut ensuite ajouter les politiques IAM aux rôles et les utilisateurs peuvent assumer les rôles.

Pour apprendre à créer une politique basée sur l’identité IAM à l’aide de ces exemples de documents de politique JSON, consultez Création de politiques IAM (console) dans le Guide de l’utilisateur IAM.

Pour plus de détails sur les actions et les types de ressources définis par AWS Glue, y compris le ARNs format de chaque type de ressource, voir Actions, ressources et clés de condition pour AWS Glue dans le Service Authorization Reference.

Note

Les exemples fournis dans cette section utilisent tous la région us-west-2. Vous pouvez le remplacer par la AWS région que vous souhaitez utiliser.

Bonnes pratiques en matière de politiques

Les politiques basées sur l'identité déterminent si quelqu'un peut créer, accéder ou supprimer les ressources AWS Glue de votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :

  • Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations à vos utilisateurs et à vos charges de travail, utilisez les politiques AWS gérées qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votre Compte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d’informations, consultez politiques gérées par AWS ou politiques gérées par AWS pour les activités professionnelles dans le Guide de l’utilisateur IAM.

  • Accordez les autorisations de moindre privilège : lorsque vous définissez des autorisations avec des politiques IAM, accordez uniquement les autorisations nécessaires à l’exécution d’une seule tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées autorisations de moindre privilège. Pour plus d’informations sur l’utilisation d’IAM pour appliquer des autorisations, consultez politiques et autorisations dans IAM dans le Guide de l’utilisateur IAM.

  • Utilisez des conditions dans les politiques IAM pour restreindre davantage l’accès : vous pouvez ajouter une condition à vos politiques afin de limiter l’accès aux actions et aux ressources. Par exemple, vous pouvez écrire une condition de politique pour spécifier que toutes les demandes doivent être envoyées via SSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifique Service AWS, tel que AWS CloudFormation. Pour plus d’informations, consultez Conditions pour éléments de politique JSON IAM dans le Guide de l’utilisateur IAM.

  • Utilisez l’Analyseur d’accès IAM pour valider vos politiques IAM afin de garantir des autorisations sécurisées et fonctionnelles : l’Analyseur d’accès IAM valide les politiques nouvelles et existantes de manière à ce que les politiques IAM respectent le langage de politique IAM (JSON) et les bonnes pratiques IAM. IAM Access Analyzer fournit plus de 100 vérifications de politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d’informations, consultez Validation de politiques avec IAM Access Analyzer dans le Guide de l’utilisateur IAM.

  • Exiger l'authentification multifactorielle (MFA) : si vous avez un scénario qui nécessite des utilisateurs IAM ou un utilisateur root, activez l'authentification MFA pour une sécurité accrue. Compte AWS Pour exiger la MFA lorsque des opérations d’API sont appelées, ajoutez des conditions MFA à vos politiques. Pour plus d’informations, consultez Sécurisation de l’accès aux API avec MFA dans le Guide de l’utilisateur IAM.

Pour plus d’informations sur les bonnes pratiques dans IAM, consultez Bonnes pratiques de sécurité dans IAM dans le Guide de l’utilisateur IAM.

Les autorisations au niveau des ressources ne s'appliquent qu'à des AWS Glue objects

Vous ne pouvez définir un contrôle précis que pour des objets spécifiques dans AWS Glue. Vous devez donc écrire la politique IAM de votre client afin que les opérations d'API qui autorisent Amazon Resource Names (ARNs) pour l'Resourceinstruction ne soient pas mélangées avec les opérations d'API qui ne l'autorisent ARNs pas.

Par exemple, la politique IAM suivante autorise les opérations d'API pour GetClassifier et GetJobRun. Il définit le Resource comme étant le * fait que AWS Glue n'autorise pas ARNs les classificateurs et les exécutions de tâches. Parce que ARNs sont autorisées pour des opérations d'API spécifiques telles que GetDatabase etGetTable, ARNs peuvent être spécifiées dans la seconde moitié de la politique.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetClassifier*", "glue:GetJobRun*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:Get*" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default", "arn:aws:glue:us-east-1:123456789012:table/default/e*1*", "arn:aws:glue:us-east-1:123456789012:connection/connection2" ] } ] }

Pour une liste des AWS Glue objets qui le permettent ARNs, voirSpécification AWS Glue Ressource ARNs.

Utilisation de la console AWS Glue

Pour accéder à la console AWS Glue, vous devez disposer d'un minimum d'autorisations. Ces autorisations doivent vous permettre de répertorier et de consulter les détails des ressources AWS Glue de votre Compte AWS. Si vous créez une politique basée sur l’identité qui est plus restrictive que l’ensemble minimum d’autorisations requis, la console ne fonctionnera pas comme prévu pour les entités (utilisateurs ou rôles) tributaires de cette politique.

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement l'API AWS CLI ou l' AWS API. Autorisez plutôt l’accès à uniquement aux actions qui correspondent à l’opération d’API qu’ils tentent d’effectuer.

Pour garantir que les utilisateurs et les rôles peuvent toujours utiliser la console AWS Glue, associez également la AWS Glue ConsoleAccess ou la politique ReadOnly AWS gérée aux entités. Pour plus d’informations, consultez Ajout d’autorisations à un utilisateur dans le Guide de l’utilisateur IAM.

Pour qu'un utilisateur puisse travailler avec AWS Glue console, cet utilisateur doit disposer d'un ensemble minimal d'autorisations lui permettant de travailler avec AWS Glue ressources pour leur AWS compte. En plus de ceux-ci AWS Glue autorisations, la console a besoin des autorisations des services suivants :

  • Autorisations Amazon CloudWatch Logs pour afficher les journaux.

  • AWS Identity and Access Management (IAM) autorisations permettant de répertorier et de transmettre des rôles.

  • AWS CloudFormation autorisations pour travailler avec des piles.

  • Autorisations Amazon Elastic Compute Cloud (Amazon EC2) permettant de VPCs répertorier des sous-réseaux, des groupes de sécurité, des instances et d'autres objets.

  • Autorisations Amazon Simple Storage Service (Amazon S3) pour répertorier les compartiments et les objets, et pour récupérer et enregistrer les scripts.

  • Autorisations Amazon Redshift requises pour travailler avec des clusters.

  • Autorisations Amazon Relational Database Service (Amazon RDS) pour répertorier les instances.

Pour plus d'informations sur les autorisations dont les utilisateurs ont besoin pour consulter et utiliser AWS Glue console, voirÉtape 3 : associer une politique aux utilisateurs ou aux groupes qui accèdent AWS Glue.

Si vous créez une politique IAM plus restrictive que les autorisations minimales requises, la console ne fonctionnera pas comme prévu pour les utilisateurs dotés de cette politique IAM. Pour s'assurer que ces utilisateurs peuvent toujours utiliser le AWS Glue console, attachez également la politique AWSGlueConsoleFullAccess gérée comme décrit dansAWS politiques gérées (prédéfinies) pour AWS Glue.

Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations

Cet exemple montre comment créer une politique qui permet aux utilisateurs IAM d’afficher les politiques en ligne et gérées attachées à leur identité d’utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide de l'API AWS CLI or AWS .

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Octroyer une autorisation en lecture seule à une table

La politique suivante accorde une autorisation en lecture seule à une table nommée books dans la base de données nommée db1. Pour plus d'informations sur la ressource Amazon Resource Names (ARNs), consultezCatalogue de données ARNs.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesActionOnBooks", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Cette politique accorde l'autorisation en lecture seule à une table nommée books dans la base de données nommée db1. Pour accorder une autorisation Get à une table, cette autorisation est également requise pour le catalogue et les ressources de base de données.

La politique suivante accorde les autorisations nécessaires minimales pour créer la table tb1 dans la base de données db1 :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:table/db1/tbl1", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:catalog" ] } ] }

Filtrer les tables par GetTables autorisation

Supposons qu'il y ait trois tables, customers, stores et store_sales dans la base de données db1. La politique suivante octroie l'autorisation GetTables à stores et store_sales, mais pas à customers. Lorsque vous appelez GetTables avec cette politique, le résultat contient uniquement les deux tables autorisées (la table customers n'est pas renvoyée).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store_sales", "arn:aws:glue:us-west-2:123456789012:table/db1/stores" ] } ] }

Vous pouvez simplifier la politique précédente en utilisant store* pour correspondre à tous les noms de table qui commencent par store.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample2", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store*" ] } ] }

De même, si vous utilisez /db1/* pour une correspondance avec toutes les tables db1, la politique suivante accorde l'accès GetTables à toutes les tables de db1.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesReturnAll", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }

Si aucun ARN de table n'est fourni, un appel de GetTables réussit, mais renvoie une liste vide.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesEmptyResults", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1" ] } ] }

Si l'ARN de la base de données est manquant dans la politique, un appel à GetTables échoue avec une erreurAccessDeniedException.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesAccessDeny", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }

Octroyer un accès complet à une table et à toutes les partitions

La politique suivante accorde toutes les autorisations sur une table nommée books dans la base de données db1. Cela inclut les autorisations de lecture et d'écriture sur la table elle-même, sur les versions archivées et sur toutes ses partitions.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:DeleteTableVersion", "glue:BatchDeleteTableVersion", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

La politique précédente peut être simplifiée dans la pratique.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:*Table*", "glue:*Partition*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Notez que la granularité minimum d'un contrôle d'accès précis se trouve au niveau de la table. Cela signifie que vous ne pouvez pas accorder à un utilisateur l'accès à certaines partitions dans une table, mais pas à d'autres, ou à certaines colonnes de la table, mais pas à d'autres. Un utilisateur a soit accès à toute la table, soit à aucune partie de la table.

Contrôler l'accès par préfixe du nom et refus explicite

Dans cet exemple, supposons que les bases de données et les tables de votre AWS Glue Data Catalog soient organisées à l'aide de préfixes de nom. Les bases de données à l'étape de développement ont le préfixe de nom dev- et celles en production ont le préfixe de nom prod-. Vous pouvez utiliser la politique suivante pour accorder aux développeurs un accès complet à toutes les bases de données UDFs, tables, etc., qui portent le dev- préfixe. Mais vous accordez un accès en lecture seule à tout avec le préfixe prod-.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DevAndProdFullAccess", "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*", "glue:*UserDefinedFunction*", "glue:*Connection*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/dev-*", "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/dev-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/dev-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/dev-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/dev-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/dev-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] }, { "Sid": "ProdWriteDeny", "Effect": "Deny", "Action": [ "glue:*Create*", "glue:*Update*", "glue:*Delete*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] } ] }

La deuxième instruction de la politique précédente utilise le explicite deny. Vous pouvez utiliser le deny explicite pour remplacer toutes les autorisations allow qui sont accordées au principal. Cela vous permet de verrouiller l'accès aux ressources critiques et d'éviter qu'une autre politique accorde un accès à celles-ci par accident.

Dans l'exemple précédent, même si la première instruction accorde un accès complet aux ressources prod-, la deuxième instruction révoque explicitement l'accès en écriture à celles-ci, laissant uniquement l'accès en lecture aux ressources prod-.

Octoyer l'accès à l'aide de balises

Par exemple, supposons que vous souhaitiez limiter l'accès à un déclencheur t2 à un utilisateur spécifique nommé Tom dans votre compte. Tous les autres utilisateurs, y compris Sam, ont accès au déclencheur t1. Les déclencheurs t1 et t2 ont les propriétés suivantes.

aws glue get-triggers { "Triggers": [ { "State": "CREATED", "Type": "SCHEDULED", "Name": "t1", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" }, { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } ] }

Le AWS Glue l'administrateur a attaché une valeur de balise Tom (aws:ResourceTag/Name": "Tom") au déclencheurt2. Le AWS Glue L'administrateur a également donné à Tom une politique IAM avec une déclaration de condition basée sur le tag. Par conséquent, Tom ne peut utiliser qu'un AWS Glue opération qui agit sur les ressources avec la valeur du tagTom.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Lorsque Tom essaie d'accéder au déclencheur t1, il reçoit un message d'accès refusé. Dans le même temps, il parvient à récupérer le déclencheur t2.

aws glue get-trigger --name t1 An error occurred (AccessDeniedException) when calling the GetTrigger operation: User: Tom is not authorized to perform: glue:GetTrigger on resource: arn:aws:glue:us-east-1:123456789012:trigger/t1 aws glue get-trigger --name t2 { "Trigger": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } }

Tom ne peut pas utiliser l'opération d'API plurielle GetTriggers pour répertorier les déclencheurs, car celle-ci ne prend pas en charge le filtrage des balises.

Pour permettre à Tom d'accéder àGetTriggers, AWS Glue L'administrateur crée une politique qui divise les autorisations en deux sections. Une section autorise Tom à accéder à tous les déclencheurs avec l'opération d'API GetTriggers. La deuxième section autorise Tom à accéder aux opérations d'API qui sont balisées avec la valeur Tom. Avec cette politique, Tom est autorisé à accéder à la fois à GetTriggers et à GetTrigger pour déclencher t2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Refuser l'accès à l'aide de balises

Une autre approche de politique de ressource consiste à refuser explicitement l'accès aux ressources.

Important

Une politique de refus explicite ne fonctionne pas pour les opérations d'API plurielles telles que GetTriggers.

Dans l'exemple de politique suivant, toutes AWS Glue les opérations de travail sont autorisées. Cependant, la deuxième instruction Effect refuse explicitement l'accès aux tâches balisées avec la clé Team et la valeur Special.

Lorsqu'un administrateur attache la politique suivante à une identité, cette dernière peut accéder à toutes les tâches, sauf celles balisées avec la clé Team et la valeur Special.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*" }, { "Effect": "Deny", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Special" } } } ] }

Utiliser des balises avec les opérations d'API de liste et de lot

Une troisième approche possible pour écrire une politique de ressource consiste à autoriser l'accès aux ressources à l'aide d'une opération d'API List pour répertorier les ressources pour une valeur de balise. Ensuite, utilisez l'opération d'API Batch correspondante pour autoriser l'accès aux détails des ressources spécifiques. Avec cette approche, l'administrateur n'a pas besoin d'autoriser l'accès aux opérations d'API GetCrawlers, GetDevEndpoints, GetJobs ou GetTriggers plurielles. Au lieu de cela, vous pouvez permettre de répertorier les ressources avec les opérations d'API suivantes :

  • ListCrawlers

  • ListDevEndpoints

  • ListJobs

  • ListTriggers

De plus, vous pouvez permettre d'obtenir des détails sur les ressources individuelles avec les opérations d'API suivantes :

  • BatchGetCrawlers

  • BatchGetDevEndpoints

  • BatchGetJobs

  • BatchGetTriggers

En tant qu'administrateur, pour utiliser cette approche, vous pouvez effectuer les opérations suivantes :

  1. Ajouter des balises à vos crawlers, points de terminaison de développement, tâches et déclencheurs.

  2. Refuser l'accès utilisateur aux opérations d'API Get telles que GetCrawlers, GetDevEndponts, GetJobs et GetTriggers.

  3. Pour permettre aux utilisateurs de déterminer à quelles ressources balisées ils ont accès, autorisez l'accès utilisateur aux opérations d'API List telles que ListCrawlers, ListDevEndponts, ListJobs et ListTriggers.

  4. Refuser l'accès des utilisateurs à AWS Glue balisage APIs, tel que TagResource et. UntagResource

  5. Autorisez l'utilisateur à accéder aux détails de ressources à l'aide des opérations d'API BatchGet telles que BatchGetCrawlers, BatchGetDevEndponts, BatchGetJobs et BatchGetTriggers.

Par exemple, lorsque vous appelez l'opération ListCrawlers, fournissez une valeur de balise pour correspondre au nom d'utilisateur. Ensuite, le résultat est une liste d'crawlers qui correspondent aux valeurs de balise fournies. Fournissez la liste de noms à BatchGetCrawlers pour obtenir des détails sur chaque crawler avec la balise donnée.

Par exemple, si Tom ne doit être en mesure de récupérer que les détails des déclencheurs balisés avec Tom, l'administrateur peut ajouter des balises aux déclencheurs pour Tom, refuser à tous les utilisateurs l'accès à l'opération d'API GetTriggers et autoriser tous les utilisateurs à accéder à ListTriggers et à BatchGetTriggers.

Voici la politique en matière de ressources selon laquelle AWS Glue subventions d'administrateur à Tom. Dans la première section de la politique, AWS Glue Les opérations d'API sont refusées pourGetTriggers. Dans la deuxième section de la politique, les opérations ListTriggers sont autorisées pour toutes les ressources. Toutefois, dans la troisième section, les ressources balisées avec Tom sont autorisées à accéder avec l'accès BatchGetTriggers.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:ListTriggers" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:BatchGetTriggers" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

En utilisant les mêmes déclencheurs que dans l'exemple précédent, Tom peut accéder au déclencheur t2, mais pas au déclencheur t1. L'exemple suivant montre les résultats lorsque Tom essaie d'accéder à t1 et t2 avec BatchGetTriggers.

aws glue batch-get-triggers --trigger-names t2 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "Schedule": "cron(0 0/1 * * ? *)" } } aws glue batch-get-triggers --trigger-names t1 An error occurred (AccessDeniedException) when calling the BatchGetTriggers operation: No access to any requested resource.

L'exemple suivant montre les résultats lorsque Tom essaie d'accéder au déclencheur t2 et au déclencheur t3 (qui n'existe pas) dans le même appel BatchGetTriggers. Notez que, comme Tom a accès au déclencheur t2 et qu'il existe, seul t2 est renvoyé. Tom est autorisé à accéder au déclencheur t3, mais le déclencheur t3 n'existe pas, si bien que t3 est renvoyé comme réponse dans une liste de "TriggersNotFound": [].

aws glue batch-get-triggers --trigger-names t2 t3 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "TriggersNotFound": ["t3"], "Schedule": "cron(0 0/1 * * ? *)" } }

Contrôler les paramètres à l'aide de clés de condition ou de contexte

Vous pouvez utiliser des clés de condition ou des clés contextuelles lorsque vous accordez des autorisations de création et de mise à jour de tâches. Ces sections traitent des clés :

Contrôler des politiques qui contrôlent les paramètres à l'aide des clés de condition

AWS Glue fournit trois clés de condition IAM glue:VpcIdsglue:SubnetIds, etglue:SecurityGroupIds. Vous pouvez utiliser les clés de condition dans les politiques IAM lorsque vous accordez des autorisations de création et de mise à jour de tâches. Vous pouvez utiliser ce paramètre pour vous assurer que les tâches ou les sessions ne sont pas créées (ou mises à jour vers) pour s'exécuter en dehors de l'environnement VPC souhaité. Les informations de configuration du VPC ne proviennent pas directement de la CreateJob demande, mais sont déduites du champ « connexions » du travail qui pointe vers un AWS Glue connexion.

Exemple d’utilisation

Créez un AWS Glue connexion de type réseau nommée « traffic-monitored-connection » avec le VpcId « vpc-id1234 » souhaité, et. SubnetIds SecurityGroupIds

Spécifiez la condition des clés de condition pour le CreateJob et UpdateJob dans la politique IAM.

{ "Effect": "Allow", "Action": [ "glue:CreateJob", "glue:UpdateJob" ], "Resource": [ "*" ], "Condition": { "ForAnyValue:StringLike": { "glue:VpcIds": [ "vpc-id1234" ] } } }

Vous pouvez créer une politique IAM similaire pour interdire la création d'un AWS Glue tâche sans spécifier d'informations de connexion.

Restreindre les sessions sur VPCs

Pour obliger les sessions créées à s'exécuter au sein d'un VPC spécifique, vous limitez l'autorisation des rôles en ajoutant un effet Deny sur l'action glue:CreateSession à la condition que le glue:vpc-id ne soit pas égal à vpc-<123>. Par exemple :

"Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "StringNotEquals" : {"glue:VpcIds" : ["vpc-123"]} }

Vous pouvez également obliger les sessions créées à s'exécuter au sein d'un VPC en ajoutant un effet Deny sur l'action glue:CreateSession à la condition que le glue:vpc-id soit nul. Par exemple :

{ "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "Null": {"glue:VpcIds": true} } }, { "Effect": "Allow", "Action": [ "glue:CreateSession" ], "Resource": ["*"] }

Contrôler des politiques qui contrôlent les paramètres à l'aide des clés de contexte

AWS Glue fournit une clé de contexte (glue:CredentialIssuingService= glue.amazonaws.com) à chaque session de rôle qui AWS Glue met à la disposition du poste de travail et du point de terminaison du développeur. Cela vous permet de mettre en œuvre des contrôles de sécurité pour les actions entreprises par AWS Glue scripts. AWS Glue fournit une autre clé de contexte (glue:RoleAssumedBy=glue.amazonaws.com) à chaque session de rôle où AWS Glue appelle un autre AWS service au nom du client (pas par un point de terminaison job/dev, mais directement par le AWS Glue service).

Exemple d’utilisation

Spécifiez l'autorisation conditionnelle dans une politique IAM et attachez-la au rôle à utiliser par un AWS Glue travail. Cela garantit que certaines actions sont autorisées/refusées selon que la session de rôle est utilisée ou non pour un AWS Glue environnement d'exécution des tâches.

{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }

Refus de la possibilité de créer des sessions d’aperçu des données à une identité

Cette section contient un exemple de politique IAM utilisé pour refuser à une identité la possibilité de créer des sessions d’aperçu des données. Associez cette politique à l’identité, qui est distincte du rôle utilisé par la session d’aperçu des données lors de son exécution.

{ "Sid": "DatapreviewDeny", "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Resource": [ "arn:aws:glue:*:*:session/glue-studio-datapreview*" ] }