IAM クラスターとEMRノートブックへのタグベースのアクセスのポリシー - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM クラスターとEMRノートブックへのタグベースのアクセスのポリシー

ID ベースのポリシーの条件を使用して、タグに基づいてクラスターとEMRノートブックへのアクセスを制御できます。

クラスターへのタグの追加の詳細については、EMR「クラスターのタグ付け」を参照してください。

次の例は、Amazon 条件キーでEMR条件演算子を使用するさまざまなシナリオと方法を示しています。これらのIAMポリシーステートメントはデモンストレーションのみを目的としており、本番環境では使用しないでください。要件に応じて、アクセス権限を付与または拒否するようにポリシーステートメントを組み合わせる複数の方法があります。IAM ポリシーの計画とテストの詳細については、IAM「 ユーザーガイド」を参照してください。

重要

アクションをタグ付けするための権限を明示的に拒否することは重要な考慮事項です。これにより、ユーザーがリソースをタグ付けして意図せずにアクセス許可を付与することを防ぎます。リソースのタグ付けアクションを拒否しない場合、ユーザーはタグを変更して、タグベースのポリシーの意図を回避できます。

クラスターのアイデンティティベースのポリシーステートメントの例

次の例は、EMRクラスターで許可されるアクションを制御するために使用されるアイデンティティベースのアクセス許可ポリシーを示しています。

重要

Amazon の ModifyInstanceGroupアクションEMRでは、クラスター ID を指定する必要はありません。そのため、クラスタータグに基づいてこのアクションを拒否するには、さらに考慮する必要があります。詳細については、「Amazon での ModifyInstanceGroup アクションの拒否 EMR」を参照してください。

特定のタグの値があるクラスター上でのみアクションを許可する

次の例では、値が dev に設定されたクラスタータグ department に基づいてユーザーのアクション実行を許可し、またその同じタグでクラスターにタグ付けすることを許可するポリシーを示します。最後のポリシー例は、同じタグ以外のタグでEMRクラスターにタグを付ける権限を拒否する方法を示しています。

次のポリシーの例では、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に 値を持つdepartmentタグリソースへのアクセスIAMのみを許可します。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「 ユーザーガイド」の「条件演算子」を参照して、条件キーの有無を確認してください。例えば、departmentタグを持つEMRクラスターに対してのみアクションを許可するには、タグに含まれる値に関係なく、前の例の条件ブロックを次のブロックに置き換えることができます。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 および次のいずれかに設定された値を持つタグを使用してクラスターを作成する必要があります。datascienceanalyticsoperations

{ "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" ] } } } ] }