Amazon のIAMポリシーの例 EBS - Amazon EBS

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

Amazon のIAMポリシーの例 EBS

デフォルトでは、ユーザーとロールには Amazon EBSリソースを作成または変更するアクセス許可はありません。また、、 AWS Command Line Interface (AWS CLI) AWS Management Console、または を使用してタスクを実行することはできません AWS API。必要なリソースに対してアクションを実行するアクセス許可をユーザーに付与するために、IAM管理者はIAMポリシーを作成できます。その後、管理者はIAMポリシーをロールに追加し、ユーザーはロールを引き受けることができます。

これらのポリシードキュメント例を使用してIAMアイデンティティベースのJSONポリシーを作成する方法については、「 ユーザーガイド」のIAM「ポリシーの作成IAM」を参照してください。

ARNs 各リソースタイプの の形式などEBS、Amazon で定義されるアクションとリソースタイプの詳細については、「サービス認証リファレンス」の「Amazon Elastic Block Store のアクション、リソース、および条件キー」を参照してください。

ポリシーのベストプラクティス

ID ベースのポリシーは、ユーザーのアカウントで誰かが Amazon EBSリソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:

  • AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する – ユーザーとワークロードにアクセス許可を付与するには、多くの一般的なユースケースにアクセス許可を付与する AWS 管理ポリシーを使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義して、アクセス許可をさらに減らすことをお勧めします。詳細については、「 ユーザーガイド」の「 AWS 管理ポリシー」または「 ジョブ機能の 管理ポリシーIAM」を参照してください。 AWS

  • 最小特権のアクセス許可を適用する – IAMポリシーでアクセス許可を設定する場合は、タスクの実行に必要なアクセス許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用してアクセス許可を適用する方法の詳細については、「 ユーザーガイド」の「 のポリシーとアクセス許可IAMIAM」を参照してください。

  • IAM ポリシーの条件を使用してアクセスをさらに制限する – ポリシーに条件を追加して、アクションとリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを を使用して送信する必要があることを指定できますSSL。条件を使用して、 などの特定の を介してサービスアクションが使用される場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「 ユーザーガイド」のIAMJSON「ポリシー要素: 条件IAM」を参照してください。

  • IAM Access Analyzer を使用してIAMポリシーを検証し、安全で機能的なアクセス許可を確保する – IAM Access Analyzer は、ポリシーがポリシー言語 (JSON) とIAMベストプラクティスに準拠するように、新規および既存のIAMポリシーを検証します。IAM Access Analyzer には、安全で機能的なポリシーの作成に役立つ 100 を超えるポリシーチェックと実用的な推奨事項が用意されています。詳細については、「 ユーザーガイド」のIAM「Access Analyzer ポリシーの検証IAM」を参照してください。

  • 多要素認証を要求する (MFA) – でIAMユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、セキュリティを強化MFAするために をオンにします。API オペレーションが呼び出されるMFAタイミングを要求するには、ポリシーにMFA条件を追加します。詳細については、「 IAMユーザーガイド」のMFA「 で保護されたAPIアクセスの設定」を参照してください。

のベストプラクティスの詳細についてはIAM、「 ユーザーガイド」の「 のセキュリティのベストプラクティスIAMIAM」を参照してください。

ユーザーに Amazon EBSコンソールの使用を許可する

Amazon Elastic Block Store コンソールにアクセスするには、最小限の許可セットが必要です。これらのアクセス許可により、 の Amazon EBSリソースの詳細を一覧表示および表示できます AWS アカウント。最小限必要な許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。

AWS CLI または のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません AWS API。代わりに、実行しようとしているAPIオペレーションに一致するアクションのみへのアクセスを許可します。

ユーザーとロールが引き続き Amazon EBSコンソールを使用できるようにするには、エンティティに Amazon EBSConsoleAccessまたは ReadOnly AWS 管理ポリシーもアタッチします。詳細については、「 ユーザーガイド」の「ユーザーへのアクセス許可の追加IAM」を参照してください。

自分の権限の表示をユーザーに許可する

この例では、IAMユーザーがユーザー ID にアタッチされているインラインポリシーと管理ポリシーを表示できるようにするポリシーを作成する方法を示します。このポリシーには、コンソールで、または AWS CLI または を使用してプログラムでこのアクションを実行するアクセス許可が含まれています AWS API。

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

ユーザーがボリュームを操作することを許可する

例: ボリュームのアタッチとデタッチ

API アクションで呼び出し元が複数のリソースを指定する必要がある場合は、必要なすべてのリソースへのアクセスをユーザーに許可するポリシーステートメントを作成する必要があります。1 つ以上のリソースで Condition エレメントを使用する必要がある場合、この例のとおり複数のステートメントを作成する必要があります。

次のポリシーでは、タグvolume_user「=」のボリュームiam-user-nameをタグ「」のインスタンスにアタッチしdepartment=dev、それらのボリュームをそれらのインスタンスからデタッチできます。このポリシーを IAMグループにアタッチする場合、 aws:username ポリシー変数は、ユーザー名を値とする という名前のタグを持つインスタンスからボリュームをアタッチまたはデタッチvolume_userするアクセス許可をグループ内の各ユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:ResourceTag/volume_user": "${aws:username}" } } } ] }

例: ボリュームの作成

次のポリシーでは、 CreateVolumeAPIアクションの使用をユーザーに許可します。ユーザーは、ボリュームが暗号化されていて、ボリューム サイズが 20 GiB 未満の場合にのみボリュームの作成を許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "NumericLessThan": { "ec2:VolumeSize" : "20" }, "Bool":{ "ec2:Encrypted" : "true" } } } ] }

例: タグ付きのボリュームの作成

次のポリシーには、タグ aws:RequestTag および costcenter=115 を使用して作成したすべてのボリュームへのタグ付けをユーザーに求める stack=prod 条件キーが含まれています。ユーザーがこれらのタグを渡さないか、タグをまったく指定しない場合、リクエストは失敗します。

タグを適用するリソース作成アクションでは、ユーザーが CreateTags アクションを使用するアクセス権限を持っていることも必要です。2 番目のステートメントは、ec2:CreateAction 条件キーを使用して、ユーザーが CreateVolume のコンテキストでみタグを使用できるようにします。ユーザーは、既存のボリュームにも他のリソースにもタグ付けできません。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateTaggedVolumes", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/costcenter": "115", "aws:RequestTag/stack": "prod" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

次のポリシーでは、ユーザーがタグを指定しなくてもボリュームを作成することができます。CreateTags アクションは、タグが CreateVolume リクエストで指定されている場合にのみ評価されます。ユーザーがタグを指定する場合、purpose=test タグを指定する必要があります。リクエストでは他のタグは許可されません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "CreateVolume" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }

例: Amazon EC2コンソールを使用したボリュームの操作

次のポリシーは、Amazon EC2コンソールを使用してボリュームを表示および作成し、特定のインスタンスにボリュームをアタッチおよびデタッチするアクセス許可をユーザーに付与します。

ユーザーは、「purpose=test」 というタグを含むインスタンスに対してどのボリュームもアタッチできます。同様に、それらのインスタンスからボリュームをデタッチすることもできます。Amazon EC2コンソールを使用してボリュームをアタッチするには、ユーザーが ec2:DescribeInstancesアクションを使用するアクセス許可を持っていると便利です。これにより、ボリュームのアタッチダイアログボックスで事前入力されたリストからインスタンスを選択できるようになります。ただし、これにより、コンソールの [Instances] ページでもすべてのインスタンスが表示されるため、このアクションを省略することもできます。

最初のステートメントでは、ボリュームを作成するときにユーザーがアベイラビリティーゾーンを選択できるようにするため、ec2:DescribeAvailabilityZones アクションが必要です。

ユーザーは、作成したボリュームをタグ付けできません (ボリュームの作成中も作成後も)。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones", "ec2:CreateVolume", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:volume/*" } ] }

スナップショットの使用をユーザーに許可する

以下は、 CreateSnapshot (point-in-time EBSボリュームのスナップショット) と CreateSnapshots (マルチボリュームスナップショット) の両方のポリシーの例です。

例: スナップショットの作成

次のポリシーでは、 CreateSnapshotAPIアクションの使用をお客様に許可します。お客様は、ボリュームが暗号化されていて、ボリューム サイズが 20 GiB 未満の場合にのみスナップショットを作成できます。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "NumericLessThan":{ "ec2:VolumeSize":"20" }, "Bool":{ "ec2:Encrypted":"true" } } } ] }

例: スナップショットの作成

次のポリシーでは、 CreateSnapshotsAPIアクションの使用をお客様に許可します。お客様は、インスタンス上のすべてのボリュームがタイプ の場合にのみスナップショットを作成できますGP2。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*" ] }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:volume/*", "Condition":{ "StringLikeIfExists":{ "ec2:VolumeType":"gp2" } } } ] }

例: タグ付きのスナップショットの作成

次のポリシーには、タグ aws:RequestTag および costcenter=115 をすべての新しいリクエストに適用することをお客様に求める stack=prod 条件キーが含まれています。ユーザーがこれらのタグを渡さないか、タグをまったく指定しない場合、リクエストは失敗します。

タグを適用するリソース作成アクションでは、CreateTags アクションを使用するアクセス権限も持っていることが求められます。3 番目のステートメントは、ec2:CreateAction 条件キーを使用して、お客様が CreateSnapshot のコンテキストでみタグを使用できるようにします。お客様は、既存のボリュームにも他のリソースにもタグ付けできません。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*" }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshot" } } } ] }

例: タグを使用してマルチボリュームスナップショットを作成する

次のポリシーには、マルチボリュームスナップショットセットを作成するときにタグ costcenter=115 および stack=prod を適用することをお客様に要求する aws:RequestTag 条件キーが含まれています。ユーザーがこれらのタグを渡さないか、タグをまったく指定しない場合、リクエストは失敗します。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshots" } } } ] }

次のポリシーでは、お客様がタグを指定しなくてもスナップショットを作成することができます。CreateTags アクションは、タグが CreateSnapshot または CreateSnapshots リクエストで指定されている場合にのみ評価されます。リクエストでは、タグを省略できます。タグを指定する場合、タグは purpose=test である必要があります。リクエストでは他のタグは許可されません。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshot" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }

次のポリシーでは、お客様がタグを指定しなくても、マルチボリュームスナップショットセットを作成することができます。CreateTags アクションは、タグが CreateSnapshot または CreateSnapshots リクエストで指定されている場合にのみ評価されます。リクエストでは、タグを省略できます。タグを指定する場合、タグは purpose=test である必要があります。リクエストでは他のタグは許可されません。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshots" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }

次のポリシーでは、ソースボリュームにお客様の User:username がタグ付けされていて、スナップショット自体に Environment:DevUser:username がタグ付けされている場合にのみスナップショットの作成を許可します。お客様は、スナップショットにタグを追加できます。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }

次の CreateSnapshots のポリシーでは、ソースボリュームにお客様用の User:username がタグ付けされ、スナップショット自体に Environment:DevUser:username のタグ付けがされている場合にのみスナップショットを作成できます。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:instance/*", }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }

次のポリシーでは、スナップショットにお客様の User:username がタグ付けされている場合のみスナップショットの削除を許可します。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:DeleteSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } } ] }

次のポリシーでは、お客様はスナップショットを作成できますが、作成されるスナップショットにタグキー value=stack が付いている場合はアクションが拒否されます。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }

次のポリシーでは、お客様はスナップショットを作成できますが、作成されるスナップショットにタグキー value=stack が付いている場合はアクションが拒否されます。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }

次のポリシーでは、複数のアクションを単一のポリシーにまとめることができます。スナップショットがリージョン CreateSnapshots で作成された場合にのみ、(us-east-1 のコンテキスト内で) スナップショットを作成できます。スナップショットがリージョン CreateSnapshots に作成されている場合、およびインスタンスタイプが us-east-1 の場合にのみ、スナップショットを作成できます (t2* のコンテキスト内で)。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:snapshot/*", "arn:aws:ec2:*:*:volume/*" ], "Condition":{ "StringEqualsIgnoreCase": { "ec2:Region": "us-east-1" }, "StringLikeIfExists": { "ec2:InstanceType": ["t2.*"] } } } ] }

例: スナップショットのコピー

CopySnapshot アクションに指定されたリソースレベルのアクセス許可は、新しいスナップショットにのみ適用されます。ソーススナップショットには指定できません。

以下のポリシーの例では、新しいスナップショットがタグキー purpose、タグ値 production (purpose=production) を使用して作成された場合にのみ、プリンシパルがスナップショットをコピーすることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCopySnapshotWithTags", "Effect": "Allow", "Action": "ec2:CopySnapshot", "Resource": "arn:aws:ec2:*:account-id:snapshot/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "production" } } } ] }

例: スナップショットのアクセス許可設定の変更

次のポリシーでは、スナップショットに というタグが付けられた場合にのみUser:username、スナップショットの変更を許可します。username は、顧客の AWS アカウントのユーザー名です。この条件が満たされない場合、リクエストは失敗します。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:ModifySnapshotAttribute", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/user-name":"${aws:username}" } } } ] }