翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IAM クラスターとEMRノートブックへのタグベースのアクセスのポリシー
ID ベースのポリシーの条件を使用して、タグに基づいてクラスターとEMRノートブックへのアクセスを制御できます。
クラスターへのタグの追加の詳細については、EMR「クラスターのタグ付け」を参照してください。
次の例は、Amazon 条件キーでEMR条件演算子を使用するさまざまなシナリオと方法を示しています。これらのIAMポリシーステートメントはデモンストレーションのみを目的としており、本番環境では使用しないでください。要件に応じて、アクセス権限を付与または拒否するようにポリシーステートメントを組み合わせる複数の方法があります。IAM ポリシーの計画とテストの詳細については、IAM「 ユーザーガイド」を参照してください。
重要
アクションをタグ付けするための権限を明示的に拒否することは重要な考慮事項です。これにより、ユーザーがリソースをタグ付けして意図せずにアクセス許可を付与することを防ぎます。リソースのタグ付けアクションを拒否しない場合、ユーザーはタグを変更して、タグベースのポリシーの意図を回避できます。
クラスターのアイデンティティベースのポリシーステートメントの例
次の例は、EMRクラスターで許可されるアクションを制御するために使用されるアイデンティティベースのアクセス許可ポリシーを示しています。
重要
Amazon の ModifyInstanceGroup
アクションEMRでは、クラスター ID を指定する必要はありません。そのため、クラスタータグに基づいてこのアクションを拒否するには、さらに考慮する必要があります。詳細については、「Amazon での ModifyInstanceGroup アクションの拒否 EMR」を参照してください。
特定のタグの値があるクラスター上でのみアクションを許可する
次の例では、値が
に設定されたクラスタータグ dev
に基づいてユーザーのアクション実行を許可し、またその同じタグでクラスターにタグ付けすることを許可するポリシーを示します。最後のポリシー例は、同じタグ以外のタグでEMRクラスターにタグを付ける権限を拒否する方法を示しています。department
次のポリシーの例では、StringEquals
条件演算子は、
をタグ dev
の値 と一致させるように試みます。タグ department
がクラスターに追加されていない、または値 department
を含んでいない場合は、ポリシーは適用されず、このアクションは、ポリシーによって許可されません。アクションを許可するポリシーステートメントが他にない場合は、ユーザーはこの値を持つこのタグを持っているクラスターとのみ作業できます。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" } } } ] }
条件付き演算子を使用して複数のタグ値を指定できます。たとえば、
タグに値 department
または dev
が含まれるクラスターですべてのアクションを許可するには、以下のように、前術の例のような条件ブロックを置き換えることもできます。test
"Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department":["dev", "test"] } }
クラスターの作成時にクラスターのタグ付けを要求する
上記の例と同様に、次のポリシー例でも、同じ一致タグ (
タグの値 department
) を検索します。ただし、この例では、dev
RequestTag
条件キーによって、タグの作成時にポリシーが適用されることが指定されています。そのため、指定された値と一致するタグを使用してクラスターを作成する必要があります。
タグ付きのクラスターを作成するには、elasticmapredue:AddTags
アクションを実行するためのアクセス許可も必要です。このステートメントでは、elasticmapreduce:ResourceTag
条件キーにより、 はタグ
に 値を持つdev
タグリソースへのアクセスIAMのみを許可します。department
Resource
要素は、このアクセス許可をクラスターリソースに制限するために使用されます。
PassRole
リソースには、 AWS アカウント ID またはエイリアス、 PassRoleForEMR
ステートメントのサービスロール名、 PassRoleForEC2
ステートメントのインスタンスプロファイル名を指定する必要があります。IAM ARN 形式の詳細については、「 ユーザーガイドIAMARNs」の「」を参照してください。 IAM
タグキー値のマッチングの詳細については、「 ユーザーガイドaws:RequestTag/tag-key
」の「」を参照してください。 IAM
{ "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*" } } } ] }
タグの値に関わらず、特定のタグがあるクラスター上でアクションを許可する
タグ値にかかわらず、特定のタグを持つクラスターでのみアクションを許可できます。これを行うには、Null
を使用できます。詳細については、IAM「 ユーザーガイド」の「条件演算子」を参照して、条件キーの有無を確認してください。例えば、
タグを持つEMRクラスターに対してのみアクションを許可するには、タグに含まれる値に関係なく、前の例の条件ブロックを次のブロックに置き換えることができます。department
Null
演算子は、EMRクラスター
上のタグの存在を探します。タグがある場合、このポリシーステートメントに指定された条件に合致し、department
Null
ステートメントは false と評価され、適切なアクションが許可されます。
"Condition": { "Null": { "elasticmapreduce:ResourceTag/department":"false" } }
次のポリシーステートメントでは、EMRクラスターに
任意の値を含むタグがある場合のみ、クラスターを作成できます。department
PassRole
リソースには、 AWS アカウント ID またはエイリアス、およびサービスロール名を指定する必要があります。IAM ARN 形式の詳細については、「 ユーザーガイドIAMARNs」の「」を参照してください。 IAM
null (「false」) 条件演算子を指定する方法の詳細については、 IAM ユーザーガイドの「条件演算子」を参照して条件キーの有無を確認してください。
{ "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*" } } } ] }
EMR ノートブックのアイデンティティベースのポリシーステートメントの例
このセクションのIAMポリシーステートメントの例は、キーを使用してEMRノートブックを使用して許可されるアクションを制限するための一般的なシナリオを示しています。プリンシパル (ユーザー) に関連付けられたその他のポリシーによってアクションが許可されない限り、示されたとおり条件コンテキストキーによって許可されるアクションが制限されます。
例 – タグ付けに基づいてユーザーが作成するEMRノートブックにのみアクセスを許可します。
以下のポリシーステートメントの例では、ロールまたはユーザーにアタッチされている場合、ユーザーは自分で作成したノートブックのみを使用できます。このポリシーステートメントは、ノートブックが作成されたときに適用されるデフォルトのタグを使用します。
この例では、StringEquals
条件演算子は、現在のユーザーの IAM ユーザー ID ({aws:userId}
) を表す変数とタグ creatorUserID
の値のマッチングを試みます。タグ creatorUserID
がノートブックに追加されていない、または現在のユーザー ID の値を含んでいない場合は、ポリシーは適用されず、このアクションは、ポリシーによって許可されません。アクションを許可するポリシーステートメントが他にない場合は、ユーザーはこの値を持つこのタグを持っているノートブックとのみ作業できます。
{ "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}" } } } ] }
例 - ノートブックの作成時にノートブックのタグ付けを求める
この例では、RequestTag
コンテキストキーが使用されています。CreateEditor
アクションは、デフォルトで追加された creatorUserID
タグをユーザーが変更または削除しない場合にのみ許可されます。変数 ${aws:userId} は、タグのデフォルト値である現在アクティブなユーザーのユーザー ID を指定します。
ポリシーステートメントは、ユーザーが createUserId
タグを削除したり、値を変更したりしていないことを確認するのに役立ちます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }
この例では、ユーザーはキー文字 dept
および次のいずれかに設定された値を持つタグを使用してクラスターを作成する必要があります。datascience
、analytics
、operations
。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }
例 - タグ付けされたクラスターにノートブックの作成を制限して、ノートブックタグを求める
この例では、指定された値のいずれかに設定されたキー文字 owner
を持つタグを使用してノートブックが作成された場合にのみ、ノートブックの作成が許可されます。さらに、指定された値のいずれかに設定されたキー文字 department
を持つタグがクラスターにある場合のみ、ノートブックを作成できます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
例 - タグに基づいてノートブックを開始する機能を制限する
この例では、ノートブックをスタートする権限を、指定された値のいずれかに設定されたキー文字 owner
があるタグを持つノートブックのみに制限します。Resource
要素は editor
のみを指定することに使用されるため、条件はクラスターには適用されず、タグ付けされる必要はありません。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }
この例は、上記の例と似ています。ただし、制限はノートブックではなく、タグ付けされたクラスターにのみ適用されます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
この例では、さまざまなノートブックおよびクラスタータグが使用されます。これにより、ノートブックは次の場合にのみ起動できます。
-
ノートブックに、指定された値のいずれかに設定されたキー文字
owner
を持つタグがある場合および
-
クラスターに、指定された値のいずれかに設定されたキー文字
department
を持つタグがある場合
{ "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" ] } } } ] }
例 - タグに基づいてノートブックエディタを開く機能を制限する
この例では、ノートブックエディタは次の場合にのみ開くことができます。
-
ノートブックに、指定された値のいずれかに設定されたキー文字
owner
を持つタグがある場合および
-
クラスターに、指定された値のいずれかに設定されたキー文字
department
を持つタグがある場合
{ "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" ] } } } ] }