IAMpolitiche per l'accesso basato su tag a cluster e notebook EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

IAMpolitiche per l'accesso basato su tag a cluster e notebook EMR

Puoi utilizzare le condizioni della tua policy basata sull'identità per controllare l'accesso a cluster e notebook in base ai tag. EMR

Per ulteriori informazioni sull'aggiunta di tag ai cluster, consulta Tagging cluster. EMR

Gli esempi seguenti mostrano diversi scenari e modi di utilizzare gli operatori di condizione con le chiavi di EMR condizione di Amazon. Queste dichiarazioni IAM politiche sono destinate esclusivamente a scopo dimostrativo e non devono essere utilizzate in ambienti di produzione. Esistono vari modi di combinare dichiarazioni di policy per concedere o negare autorizzazioni in base alle tue esigenze. Per ulteriori informazioni sulle IAM politiche di pianificazione e test, consulta la Guida per l'IAMutente.

Importante

Negare esplicitamente l'autorizzazione per operazioni di assegnazione di tag è una possibilità da tenere in debita considerazione. Ciò impedisce agli utenti di concedersi personalmente autorizzazioni tramite tag di una risorsa che non avevi intenzione di accordare. Se non neghi le operazioni di assegnazione di tag per una risorsa, un utente può modificare i tag e aggirare l'intenzione delle policy basate su tag.

Dichiarazioni di policy basate su identità di esempio per cluster

Gli esempi seguenti illustrano le politiche di autorizzazione basate sull'identità utilizzate per controllare le azioni consentite con i cluster. EMR

Importante

L'ModifyInstanceGroupazione in Amazon EMR non richiede la specificazione di un ID del cluster. Per questo motivo, negare questa azione basata su tag del cluster richiede un'ulteriore considerazione. Per ulteriori informazioni, consulta Negare l' ModifyInstanceGroup azione in Amazon EMR.

Autorizzazione di operazioni solo su cluster con specifici valori di tag

Gli esempi che seguono mostrano una policy che autorizza un utente a eseguire operazioni in base al tag di cluster department con il valore dev e un altro utente a contrassegnare cluster con quello stesso tag. L'ultimo esempio di policy dimostra come negare i privilegi per etichettare i EMR cluster con qualcosa che non sia lo stesso tag.

Nell'esempio di policy seguente, l'operatore di condizione StringEquals cerca di far corrispondere dev con il valore del tag department. Se il tag department non è stato aggiunto al cluster, oppure non contiene il valore dev, la policy non viene applicata e le operazioni non sono consentite da questa policy. Se nessun'altra dichiarazione di policy consente le operazioni, l'utente può utilizzare solo i cluster che hanno questo tag con tale valore.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt12345678901234", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps", "elasticmapreduce:TerminateJobFlows", "elasticmapreduce:SetTerminationProtection", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:DescribeStep" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } } ] }

Puoi anche specificare più valori di tag utilizzando un operatore di condizione. Ad esempio, per consentire tutte le operazioni su cluster in cui il tag department contiene il valore dev o test, puoi sostituire il blocco di condizione nell'esempio precedente con quanto segue.

"Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department":["dev", "test"] } }

Richiesta dell'assegnazione di tag a un cluster appena creato

Come nell'esempio precedente, l'esempio seguente di policy cerca lo stesso tag corrispondente: il valore dev per il tag department. In questo esempio, però, la chiave di condizione RequestTag specifica che la policy si applica durante la creazione del tag. Quindi è necessario creare un cluster con un tag che corrisponda al valore specificato.

Per creare un cluster con un tag, devi anche disporre dell'autorizzazione per l'azione elasticmapredue:AddTags. Per questa dichiarazione, la chiave elasticmapreduce:ResourceTag condition garantisce che l'accesso sia IAM consentito solo alle risorse di tag con il valore sul tag. dev department L'elemento Resource viene utilizzato per limitare questa autorizzazione alle risorse del cluster.

Per le PassRole risorse, è necessario fornire l'ID o l'alias dell' AWS account, il nome del ruolo di servizio nell'PassRoleForEMRistruzione e il nome del profilo dell'istanza nell'PassRoleForEC2istruzione. Per ulteriori informazioni sul IAM ARN formato, consulta IAMARNsla Guida per l'IAMutente.

Per ulteriori informazioni sulla corrispondenza dei valori tag-key, consulta aws:RequestTag/tag-keyla Guida per l'IAMutente.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RunJobFlowExplicitlyWithTag", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "dev" } } }, { "Sid": "AddTagsForDevClusters", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } }, { "Sid": "PassRoleForEMR", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }

Autorizzazione di operazioni su cluster con uno specifico tag indipendentemente dal valore di tag

Puoi anche consentire operazioni solo su cluster con un determinato tag, indipendentemente dal valore di tag. A questo proposito, puoi utilizzare l'operatore Null. Per ulteriori informazioni, consultate Condition operator per verificare l'esistenza delle chiavi di condizione nella Guida per l'IAMutente. Ad esempio, per consentire azioni solo sui EMR cluster che hanno il department tag, indipendentemente dal valore che contiene, è possibile sostituire i blocchi Condition dell'esempio precedente con quello seguente. L'Nulloperatore cerca la presenza del tag department in un EMR cluster. Se il tag esiste, l'istruzione Null restituisce il valore false, corrispondente alla condizione specificata nella dichiarazione di policy, e le operazioni appropriate sono consentite.

"Condition": { "Null": { "elasticmapreduce:ResourceTag/department":"false" } }

La seguente dichiarazione politica consente a un utente di creare un EMR cluster solo se il cluster avrà un department tag, che può contenere qualsiasi valore. Per la PassRole risorsa, è necessario fornire l'ID o l'alias AWS dell'account e il nome del ruolo del servizio. Per ulteriori informazioni sul IAM ARN formato, consulta IAMARNsla Guida per l'IAMutente.

Per ulteriori informazioni sulla specificazione dell'operatore di condizione nullo («falso»), consultate Operatore di condizione per verificare l'esistenza delle chiavi di condizione nella Guida per l'IAMutente.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateClusterTagNullCondition", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": [ "*" ], "Condition": { "Null": { "aws:RequestTag/department": "false" } } }, { "Sid": "AddTagsNullCondition", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "Null": { "elasticmapreduce:ResourceTag/department": "false" } } }, { "Sid": "PassRoleForElasticMapReduce", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }

Esempi di dichiarazioni politiche basate sull'identità per i notebook EMR

Le dichiarazioni IAM politiche di esempio in questa sezione illustrano scenari comuni per l'utilizzo delle chiavi per limitare le azioni consentite utilizzando Notebook. EMR Finché nessun'altra policy associata al principale (utente) consente le operazioni, le chiavi di contesto della condizione limitano le operazioni consentite come indicato.

Esempio
— Consenti l'accesso solo ai EMR notebook creati da un utente in base ai tag

L'esempio seguente di istruzione di policy, quando collegata a un ruolo o a un utente, consente all'utente di utilizzare solo i notebook che ha creato. Questa istruzione di policy usa il tag predefinito applicato durante la creazione di un notebook.

In questo esempio, l'operatore di condizione StringEquals cerca di mettere in corrispondenza una variabile che rappresenta l'ID dell'utente attuale ({aws:userId}) con il valore del tag creatorUserID. Se il tag creatorUserID non è stato aggiunto al notebook, oppure non contiene il valore dell'ID dell'utente corrente, la policy non viene applicata e le operazioni non sono consentite da questa policy. Se nessun'altra istruzione di policy consente le operazioni, l'utente può utilizzare solo i notebook che hanno questo tag con tale valore.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:DescribeEditor", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}" } } } ] }
Esempio -Richiedere l'assegnazione di tag al notebook durante la creazione

In questo esempio viene utilizzata la chiave di contesto RequestTag. L'operazione CreateEditor è consentita solo se l'utente non modifica o elimina il tag creatorUserID aggiunto per impostazione predefinita. La variabile $ {aws:userId} specifica l'ID utente dell'utente attualmente attivo, che è il valore predefinito del tag.

L'istruzione della policy può essere utilizzata per garantire che gli utenti non rimuovano il tag createUserId o ne modifichino il valore.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }

Questo esempio richiede che l'utente crei il cluster con un tag con la stringa di chiave dept e un valore impostato per uno dei seguenti: datascience, analytics, operations.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }
Esempio -Limitare la creazione di notebook ai cluster con tag e richiedere i tag del notebook

Questo esempio consente la creazione di notebook solo se il notebook viene creato con un tag che abbia la stringa di chiave owner impostata su uno dei valori specificati. Inoltre, è possibile creare il notebook solo se il cluster dispone di un tag con la stringa di chiave department impostata su uno dei valori specificati.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
Esempio -Limitare la possibilità di avviare un notebook basato su tag

Questo esempio limita la possibilità di avviare solo i notebook che dispongono di un tag con la stringa di chiave owner impostata su uno dei valori specificati. Poiché l'elemento Resource è utilizzato per specificare solo editor, la condizione non è valida per il cluster e non è necessario aggiungere tag al cluster.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }

Questo esempio è simile a uno precedente. Tuttavia, il limite si applica solo ai cluster a cui sono applicati tag, non ai notebook.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }

In questo esempio viene utilizzato un altro set di tag di notebook e cluster. Consente di avviare un notebook solo se:

  • Il notebook dispone di un tag con la stringa di chiave owner impostata su uno dei valori specificati

    -e-

  • Il cluster dispone di un tag con la stringa di chiave department impostata su uno dei valori specificati

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }
Esempio -Limitare la possibilità di aprire l'editor del notebook basato su tag

Questo esempio consente di aprire l'editor del notebook solo se:

  • Il notebook dispone di un tag con la stringa di chiave owner impostata su uno dei valori specificati.

    -e-

  • Il cluster dispone di un tag con la stringa di chiave department impostata su uno dei valori specificati.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }