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'ModifyInstanceGroup
azione 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.
Argomenti
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
con il valore department
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.dev
Nell'esempio di policy seguente, l'operatore di condizione StringEquals
cerca di far corrispondere
con il valore del tag dev
. Se il tag department
non è stato aggiunto al cluster, oppure non contiene il valore department
, 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.dev
{ "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
contiene il valore department
o dev
, puoi sostituire il blocco di condizione nell'esempio precedente con quanto segue. test
"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
per il tag dev
. In questo esempio, però, la chiave di condizione department
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
L'elemento department
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'PassRoleForEMR
istruzione e il nome del profilo dell'istanza nell'PassRoleForEC2
istruzione. 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-key
la 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
tag, indipendentemente dal valore che contiene, è possibile sostituire i blocchi Condition dell'esempio precedente con quello seguente. L'department
Null
operatore cerca la presenza del tag
in un EMR cluster. Se il tag esiste, l'istruzione department
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
tag, che può contenere qualsiasi valore. Per la department
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" ] } } } ] }