メニュー
AWS Identity and Access Management
ユーザーガイド

IAM リソースの管理に関するポリシーの例

以下に示すのは、IAM ユーザー、グループ、および認証情報の管理に関連するタスクをユーザーが実行可能にする IAM ポリシーの例です。これには、自分のパスワード、アクセスキー、多要素認証 (MFA) デバイスの管理をユーザーに許可するポリシーも含まれます。

Amazon S3、Amazon EC2、DynamoDB など、他の AWS サービスの使用によるタスクの実行をユーザーに許可するポリシーの例については、「ポリシーの例」を参照してください。

ユーザーが自分のパスワードを管理することを許可する([My Password] ページから)

すべてのユーザーが自分のパスワードを変更できるよう、アカウントのパスワードポリシーが設定されている場合、個々のユーザーまたはグループに権限をアタッチする必要はありません。ユーザーはすべて、自分のパスワードを変更できる、AWS マネジメントコンソールの [My Password] ページにアクセスできます。

すべてのユーザーが自分のパスワードを変更できるよう、アカウントのパスワードポリシーが設定されていない場合、選択したユーザーまたはグループに以下のポリシーをアタッチすることで、それらのユーザーが自分のパスワードのみを変更できるようになります。このポリシーでは、コンソールの [My Password page] ページの使用がユーザーに許可されるのみであり、IAM コンソールのダッシュボード全体を操作するアクセス権限はユーザーに付与されません。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:GetAccountPasswordPolicy", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:ChangePassword", "Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}" } ] }

ユーザーが自分のパスワードの変更にコンソールを使用しない場合、iam:GetAccountPasswordPolicy アクセス権限は不要です。代わりに AWS CLI から aws iam change-password コマンドを実行するか、ChangePassword アクションによってリクエストを作成します。

選択したユーザーが IAM コンソールの [Users] セクションを使用してパスワードを管理できるようにする方法については、次のセクションを参照してください。

ユーザーが自分のパスワード、アクセスキー、SSH キーを管理することを許可する

次のポリシーでは、ユーザーがこれらのアクションを AWS マネジメントコンソールで実行することができます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:*LoginProfile", "iam:*AccessKey*", "iam:*SSHPublicKey*" ], "Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}" }, { "Effect": "Allow", "Action": [ "iam:ListAccount*", "iam:GetAccountSummary", "iam:GetAccountPasswordPolicy", "iam:ListUsers" ], "Resource": "*" } ] }

上のポリシー内のアクションにはワイルドカードが含まれています(iam:*LoginProfileiam:*AccessKey*iam:*SSHPublicKey* など)。これは、関連する一連のアクションを含めるのに便利です。関連する一連のアクションのうち、いずれか 1 つに対するアクセス権限を削除するには、代わりに、個々のアクションを指定する必要があります。たとえば、ユーザーがパスワードを削除できないようにするには、iam:CreateLoginProfileiam:GetLoginProfileiam:UpdateLoginProfile を個別に指定し、iam:DeleteLoginProfile を除外する必要があります。

iam:GetAccountSummaryiam:GetAccountPasswordPolicyiam:ListAccount*、および iam:ListUsers 権限など、Statement アレイの 2 番目の要素は、ユーザーが特定の情報 (パスワードポリシーが有効かどうか、アカウントが持っているグループの数、アカウントの URL および別名など) を IAM コンソールのダッシュボードに表示することを許可します。たとえば、GetAccountSummary アクションでは、アカウントに関する情報のコレクションを含むオブジェクトが返され、IAM コンソールのダッシュボードに表示されます。

以下のポリシーは前述のポリシーと似ていますが、コンソールアクセスのみに必要とされる権限が除外されています。このポリシーでは、ユーザーが AWS CLI、Tools for Windows PowerShell、AWS SDK、または IAM HTTP クエリ API を使用して、認証情報を管理することができます。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:*LoginProfile", "iam:*AccessKey*", "iam:*SSHPublicKey*" ], "Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}" } }

ユーザーがレポート作成の目的でアカウントのグループ、ユーザー、ポリシーなどを一覧表示することを許可する

次のポリシーでは、ユーザーは文字列 Get または List で始まる任意の IAM アクションを呼び出すことができます。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": "*" } }

Get* および List* アクションを使用することの利点は、今後新しい種類のエンティティが IAM に追加された場合、すべてのアクションの Get* および List* を行うアクセス権限がポリシー内で付与されることにより、これらの新しいエンティティをユーザーが自動的に一覧表示できることです。

ユーザーがグループのメンバーシップを管理することを許可する

次のポリシーでは、ユーザーは MarketingGroup というグループのメンバーシップを更新することができます。次のポリシーを使用するには、ACCOUNT-ID-WITHOUT-HYPHENS を AWS アカウント ID に置き換えてください。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:GetGroup" ], "Resource": "arn:aws:iam::account-id-without-hyphens:group/MarketingGroup" } }

ユーザーが IAM ユーザーを管理することを許可する

次のポリシーでは、IAM ユーザーの管理に関連するすべてのタスクの実行がユーザーに許可されますが、グループやポリシーの作成など、他のエンティティに対するアクションの実行は許可されません。許可されるアクションは以下のとおりです。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsersToPerformUserActions", "Effect": "Allow", "Action": [ "iam:CreateUser", "iam:ListUsers", "iam:GetUser", "iam:UpdateUser", "iam:DeleteUser", "iam:ListGroupsForUser", "iam:ListUserPolicies", "iam:ListAttachedUserPolicies", "iam:DeleteSigningCertificate", "iam:DeleteLoginProfile", "iam:RemoveUserFromGroup", "iam:DetachUserPolicy", "iam:DeleteUserPolicy" ], "Resource": "*" }, { "Sid": "AllowUsersToSeeStatsOnIAMConsoleDashboard", "Effect": "Allow", "Action": [ "iam:GetAccount*", "iam:ListAccount*" ], "Resource": "*" } ] }

上のポリシーに含まれているアクセス権限のうちいくつかは、AWS マネジメントコンソールでタスクを実行することを許可します。AWS CLIAWS SDK、または IAM HTTP クエリ API のみからユーザー関連のタスクを実行するユーザーには、一部のアクセス権限が不要になる可能性があります。たとえば、あるユーザーからデタッチするポリシーの ARN が既にわかっているユーザーに、iam:ListAttachedUserPolicies 権限は不要です。ユーザーが必要とする正確な権限リストは、ユーザーが他のユーザーを管理するときに実行する必要があるタスクによって決まります。

ポリシーの以下の権限では、ユーザーは AWS マネジメントコンソールを介してタスクにアクセスすることができます。

  • iam:GetAccount*

  • iam:ListAccount*

ユーザーがアカウントパスワードポリシーを設定することを許可する

AWS アカウントのパスワードポリシーを取得および更新するための権限を一部のユーザーに与えることもできます。以下のポリシーの例は、次の権限を付与します。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "iam:UpdateAccountPasswordPolicy" ], "Resource": "*" } }

ユーザーが IAM 認証情報レポートを生成、取得することを許可する

AWS アカウント内のすべてのユーザーを一覧表示するレポートを生成およびダウンロードする権限を一部のユーザーに付与することができます。このレポートには、パスワード、アクセスキー、MFA デバイス、署名証明書など、さまざまな認証情報のステータスも一覧表示されます。以下のポリシーの例は、次の権限を付与します。

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:GenerateCredentialReport", "iam:GetCredentialReport" ], "Resource": "*" } }

認証情報レポートの詳細については、「AWS アカウントの認証情報レポートの取得」を参照してください。

ユーザーが自分の仮想 MFA デバイスのみを管理することを許可する

仮想 MFA デバイスは、ワンタイムパスワードを提供するデバイスのソフトウェア実装です。仮想 MFA デバイスのホストは、物理的なハードウェアデバイス(通常はスマートフォン)です。仮想 MFA デバイスを設定するには、仮想 MFA デバイスをホストする物理デバイスにアクセスできる必要があります。ユーザーが自分のスマートフォンのスマートフォンアプリ内部に仮想 MFA デバイスを作成する場合、デバイスをユーザー自身で設定できる方が都合のいいことがあります。IAM による仮想 MFA デバイスの使用の詳細については、「多要素認証(MFA)仮想デバイスの有効化」を参照してください。

次のポリシーでは、ユーザーが AWS マネジメントコンソールから、または任意のコマンドラインツールを使用して、自分の仮想 MFA デバイスを設定し、管理することができます。このポリシーでは、MFA 認証されたユーザーだけが自分の仮想 MFA デバイスを非アクティブ化し、削除することができます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsersToCreateEnableResyncDeleteTheirOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:ResyncMFADevice", "iam:DeleteVirtualMFADevice" ], "Resource": [ "arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}", "arn:aws:iam::account-id-without-hyphens:user/${aws:username}" ] }, { "Sid": "AllowUsersToDeactivateTheirOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice" ], "Resource": [ "arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}", "arn:aws:iam::account-id-without-hyphens:user/${aws:username}" ], "Condition": { "Bool": { "aws:MultiFactorAuthPresent": true } } }, { "Sid": "AllowUsersToListMFADevicesandUsersForConsole", "Effect": "Allow", "Action": [ "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ListUsers" ], "Resource": "*" } ] }

注記

アクション iam:DeleteVirtualMFADevice は、2 番目ではなく最初のステートメントに含まれているため、MFA 条件の対象にはなりません。MFA デバイスは非アクティブにした後でのみ削除できるため (ユーザーは MFA 認証されている場合のみ、この操作を行うことができます)、これはセキュリティ上の懸念事項ではありません。これにより、Create MFA Device ウィザードでデバイスを作成した後で、2 つのコードを検証し、ユーザーと関連付ける前にウィザードをキャンセルした場合に発生する可能性のある状況を回避できます。この時点ではユーザーはまだ MFA 認証されていないため、デバイスを削除するにはポリシーで MFA 認証が必要になる場合、ウィザード (ユーザーのアクセス権限により動作) はデバイスのクリーンアップに失敗します。

すべての IAM アクション(管理アクセス)を許可する

パスワード、アクセスキー、ユーザー証明書、MFA デバイス、ユーザー証明書の管理など、IAM 内のすべてのアクションを実行するための管理権限を一部のユーザーに与える場合があります。以下のポリシーの例は、次の権限を付与します。

警告

ユーザーに IAM に対するフルアクセスを許可する場合、ユーザーが自分または他者に付与できるアクセス権限に制限がなくなります。ユーザーは新しい IAM エンティティ(ユーザーまたはロール)を作成することや、それらのエンティティに AWS アカウント内のすべてのリソースに対するフルアクセスを付与することができます。 ユーザーに IAM に対するフルアクセスを許可した場合、事実上、AWS アカウント内のすべてのリソースに対するフルアクセスを許可したことになります。これには、すべてのリソースを削除するためのアクセス権限も含まれます。これらのアクセス権限は信頼されている管理者にのみ付与してください。また、これらの管理者には多要素認証 (MFA) を適用してください

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:*", "Resource": "*" } }