

# IAM アイデンティティベースのポリシーの例
<a name="access_policies_examples"></a>

[ポリシー](access_policies.md)は AWS のオブジェクトであり、アイデンティティやリソースに関連付けて、これらのアクセス許可を定義します。AWS は、IAM プリンシパル (ユーザーまたはロール) によってリクエストが行われると、それらのポリシーを評価します。ポリシーでの権限により、リクエストが許可されるか拒否されるかが決まります。通常、ポリシーは、IAM エンティティ (ユーザー、ユーザーのグループ、ロール) にアタッチされている JSON ドキュメントとして AWS に保存されます。アイデンティティベースのポリシーには、AWS 管理ポリシー、カスタマー管理ポリシー、およびインラインポリシーがあります。これらの例の JSON ポリシードキュメントを使用して IAM ポリシーを作成する方法については、「[JSON エディターを使用したポリシーの作成](access_policies_create-console.md#access_policies_create-json-editor)」を参照してください。

デフォルトではすべてのリクエストが拒否されるため、その ID がアクセスするサービス、アクション、リソースへのアクセスを許可する必要があります。IAM コンソールで指定したアクションを完了するためのアクセスも許可する場合は、追加のアクセス許可を提供する必要があります。

以下のポリシーのライブラリは、IAM ID のアクセス許可を定義する参考になります。必要なポリシーを見つけたら、[**View this policy (このポリシーを表示)**] を選択してそのポリシーの JSON を表示します。JSON のポリシードキュメントをテンプレートとして使用して、独自のポリシーを作成できます。

**注記**  
このリファレンスガイドに含めるポリシーを送信する場合は、このページの下部にある [**フィードバック**] ボタンを使用します。

## ポリシーの例: AWS
<a name="policy_library_AWS"></a>
+ 特定の日付範囲内のアクセスを許可します。([このポリシーを表示](reference_policies_examples_aws-dates.md)。)
+ AWS リージョンの有効化と無効化 ([このポリシーを表示](reference_policies_examples_aws-enable-disable-regions.md)。)
+ MFA で認証されたユーザーが **[セキュリティ認証情報]** ページで自分の認証情報を管理できるようにします。([このポリシーを表示](reference_policies_examples_aws_my-sec-creds-self-manage.md)。)
+ 指定した日付の範囲内で MFA を使用したときに特定のアクセスを許可する。([このポリシーを表示](reference_policies_examples_aws_mfa-dates.md)。)
+ ユーザーが **[セキュリティ認証情報]** ページで自分の認証情報を管理できるようにします。([このポリシーを表示](reference_policies_examples_aws_my-sec-creds-self-manage-no-mfa.md)。)
+ ユーザーが **[セキュリティ認証情報]** ページで自分の MFA デバイスを管理できるようにします。([このポリシーを表示](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md)。)
+ ユーザーが **[セキュリティ認証情報]** ページで自分のパスワードを管理できるようにします。([このポリシーを表示](reference_policies_examples_aws_my-sec-creds-self-manage-password-only.md)。)
+ ユーザーが **[セキュリティ認証情報]** ページで自分のパスワード、アクセスキー、および SSH パブリックキーを管理できるようにします。([このポリシーを表示](reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh.md)。)
+ リクエストされたリージョンに基づいて、AWS へのアクセスを拒否する ([このポリシーを表示](reference_policies_examples_aws_deny-requested-region.md)。)
+ 送信元 IP に基づいて AWS へのアクセスを拒否する ([このポリシーを表示](reference_policies_examples_aws_deny-ip.md)。)

## ポリシーの例: AWS Data Exchange
<a name="policy_data_exchange"></a>
+ AWS Data Exchange 以外のアカウント外の Amazon S3 リソースへのアクセスを拒否します。([このポリシーを表示](reference_policies_examples_resource_account_data_exch.md)。)

## ポリシーの例: AWS Data Pipeline
<a name="policy_library_DataPipeline"></a>
+ ユーザーが作成していないパイプラインへのアクセスを拒否する ([このポリシーを表示](reference_policies_examples_datapipeline_not-owned.md))。

## ポリシーの例: Amazon DynamoDB
<a name="policy_library_DynamoDB"></a>
+ 特定の Amazon DynamoDB テーブルへのアクセスを許可する ([このポリシーを表示](reference_policies_examples_dynamodb_specific-table.md))。
+ 特定の Amazon DynamoDB 属性へのアクセスを許可する ([このポリシーを表示](reference_policies_examples_dynamodb_attributes.md))。
+ Amazon Cognito ID に基づいて Amazon DynamoDB への項目レベルのアクセスを許可する ([このポリシーを表示](reference_policies_examples_dynamodb_items.md))。

## ポリシーの例: Amazon EC2
<a name="policy_library_ec2"></a>
+ タグに基づいて Amazon EC2 インスタンスに Amazon EBS ボリュームをアタッチまたはデタッチすることを許可する ([このポリシーを表示](reference_policies_examples_ec2_ebs-owner.md))。
+ 特定のサブネットで、プログラムおよびコンソールで Amazon EC2 インスタンスを起動することを許可する ([このポリシーを表示](reference_policies_examples_ec2_instances-subnet.md))
+ 特定の VPC に関連付けられた Amazon EC2 セキュリティグループを、プログラムによりコンソールで管理することを許可する ([このポリシーを表示](reference_policies_examples_ec2_securitygroups-vpc.md))。
+ ユーザーがタグ付けした Amazon EC2 インスタンスをプログラムによりコンソールで開始や停止を行うことを許可する ([このポリシーを表示](reference_policies_examples_ec2_tag-owner.md))。
+ Amazon EC2 インスタンスを、リソースおよびプリンシパルのタグに基づき、プログラムを使用する、およびコンソールで開始または停止することを許可する ([このポリシーを表示](reference_policies_examples_ec2-start-stop-tags.md))。
+ リソースとプリンシパルのタグが一致すると、Amazon EC2 インスタンスの開始または停止を許可する ([このポリシーを表示](reference_policies_examples_ec2-start-stop-match-tags.md))。
+ 特定のリージョンでの完全な Amazon EC2 アクセスをプログラムによりコンソールで許可する ([このポリシーを表示](reference_policies_examples_ec2_region.md)。)
+ プログラムおよびコンソールで特定の Amazon EC2 インスタンスの起動または停止、および特定のセキュリティグループの変更を許可する ([このポリシーを表示](reference_policies_examples_ec2_instance-securitygroup.md))
+ MFA なしで特定の Amazon EC2 オペレーションへのアクセスを拒否する ([このポリシーを表示](reference_policies_examples_ec2_require-mfa.md))。
+ Amazon EC2 インスタンスの削除を特定の IP アドレス範囲に制限する ([このポリシーを表示](reference_policies_examples_ec2_terminate-ip.md))

## ポリシーの例: AWS Identity and Access Management (IAM)
<a name="policy_library_IAM"></a>
+ Policy Simulator API へのアクセスを許可する ([このポリシーを表示](reference_policies_examples_iam_policy-sim.md))。
+ Policy Simulator コンソールへのアクセスを許可する ([このポリシーを表示](reference_policies_examples_iam_policy-sim-console.md))。
+ 特定のタグを持つロールを引き受けることをプログラムによりコンソールで許可する ([このポリシーを表示](reference_policies_examples_iam-assume-tagged-role.md))。
+ 複数のサービスへのアクセスをプログラムによりコンソールで許可および拒否する ([このポリシーを表示](reference_policies_examples_iam_multiple-services-console.md))。
+ 特定のタグを、別の特定のタグ、プログラム、およびコンソールで IAM ユーザーに追加することを許可する ([このポリシーを表示](reference_policies_examples_iam-add-tag.md))。
+ 任意の IAM ユーザーまたはロールに、特定のタグをプログラムによりコンソールで追加することを許可する ([このポリシーを表示](reference_policies_examples_iam-add-tag-user-role.md))。
+ 特定のタグでのみ新規ユーザーを作成することを許可する ([このポリシーを表示](reference_policies_examples_iam-new-user-tag.md))。
+ IAM 認証情報レポートの生成および取得を許可する ([このポリシーを表示](reference_policies_examples_iam-credential-report.md))。
+ グループメンバーをプログラムによりコンソールで管理することを許可する ([このポリシーを表示](reference_policies_examples_iam_manage-group-membership.md))。
+ 特定のタグの管理を許可する ([このポリシーを表示](reference_policies_examples_iam-manage-tags.md))。
+ IAM ロールを特定のサービスに渡すことを許可する ([このポリシーを表示](reference_policies_examples_iam-passrole-service.md))。
+ レポートなしでの IAM コンソールへの読み取り専用アクセスを許可する ([このポリシーを表示](reference_policies_examples_iam_read-only-console-no-reporting.md))。
+ IAM コンソールへの読み取り専用アクセスを許可する ([このポリシーを表示](reference_policies_examples_iam_read-only-console.md))。
+ 特定のユーザーによるグループの管理をプログラムによりコンソールで許可する ([このポリシーを表示](reference_policies_examples_iam_users-manage-group.md))。
+ アカウントのパスワード要件の設定をプログラムによりコンソールで許可する ([このポリシーを表示](reference_policies_examples_iam_set-account-pass-policy.md))。
+ 特定のパスがあるユーザーに Policy Simulator API の使用を許可する ([このポリシーを表示](reference_policies_examples_iam_policy-sim-path.md))。
+ 特定のパスがあるユーザーに Policy Simulator コンソールの使用を許可する ([このポリシーを表示](reference_policies_examples_iam_policy-sim-path-console.md))。
+ IAM: ユーザーに MFA デバイスの自己管理を許可する ([このポリシーを表示](reference_policies_examples_iam_mfa-selfmanage.md)。)
+ IAM ユーザーが自分の認証情報をプログラムまたはコンソールで設定することを許可する。([このポリシーを表示](reference_policies_examples_iam_credentials_console.md)。)
+ IAM コンソールで AWS Organizations ポリシーのサービスの最終アクセス情報を表示することを許可する。([このポリシーを表示](reference_policies_examples_iam_service-accessed-data-orgs.md)。)
+ IAM ユーザー、グループ、またはロールに適用できる管理ポリシーを制限する ([このポリシーを表示](reference_policies_examples_iam_limit-managed.md))。
+ アカウント内の IAM ポリシーにのみアクセスを許可します ([このポリシーを表示](resource_examples_iam_policies_resource_account.md))。

## ポリシーの例: AWS Lambda
<a name="policy_library_Lambda"></a>
+ Amazon DynamoDB テーブルにアクセスする AWS Lambda 関数を許可する ([このポリシーを表示](reference_policies_examples_lambda-access-dynamodb.md))。

## ポリシーの例: Amazon RDS
<a name="policy_library_RDS"></a>
+ Amazon RDS は、特定のリージョン内で RDS データベースへのフルアクセスを許可します。([このポリシーを表示](reference_policies_examples_rds_region.md)。)
+ Amazon RDS データベースをプログラムおよびコンソールで復元することを許可する ([このポリシーを表示](reference_policies_examples_rds_db-console.md))
+ タグ所有者にタグ付けした Amazon RDS リソースへのフルアクセスを許可する ([このポリシーを表示](reference_policies_examples_rds_tag-owner.md))

## ポリシーの例: &Amazon S3
<a name="policy_library_S3"></a>
+ Amazon Cognito ユーザーが自分の Amazon S3 バケットのオブジェクトにアクセスすることを許可する ([このポリシーを表示](reference_policies_examples_s3_cognito-bucket.md))
+ 一時的な認証情報を持つユーザーが Amazon S3 にある自分のホームディレクトリにプログラムを使用してコンソール内でアクセスできるようにします ([このポリシーを表示](reference_policies_examples_s3_federated-home-directory-console.md))
+ 完全な S3 アクセスを許可しても、管理者が過去 30 分以内に MFA を使用してサインインしていない場合は本番稼働用バケットへのアクセスを明示的に拒否する ([このポリシーを表示](reference_policies_examples_s3_full-access-except-production.md))。
+ IAM ユーザーが Amazon S3 の自分のホームディレクトリにプログラムおよびコンソールでアクセスすることを許可する ([このポリシーを表示](reference_policies_examples_s3_home-directory-console.md))
+ ユーザーに 1 つの Amazon S3 バケットの管理を許可し、他のすべての AWS アクションおよびリソースを拒否する ([このポリシーを表示](reference_policies_examples_s3_deny-except-bucket.md))。
+ 特定の Amazon S3 バケットへの `Read` と `Write` アクセスを許可する ([このポリシーを表示](reference_policies_examples_s3_rw-bucket.md))
+ 特定の Amazon S3 バケットにプログラムおよびコンソールで `Read` および `Write` アクセスを許可する ([このポリシーを表示](reference_policies_examples_s3_rw-bucket-console.md))

# AWS: 日付と時刻に基づいてアクセスを許可します
<a name="reference_policies_examples_aws-dates"></a>

この例では、日付と時刻に基づいてアクションへのアクセスを許可する ID ベースポリシーを作成する方法を示します。このポリシーは、2020 年 4 月 1 日から 2020 年 6 月 30 日 (UTC) の間に発生するアクションへのアクセスを制限します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

IAM ポリシーの `Condition` ブロック内で複数の条件を使用する方法については、「[条件内の複数の値](reference_policies_elements_condition.md#Condition-multiple-conditions)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "service-prefix:action-name",
            "Resource": "*",
            "Condition": {
                "DateGreaterThan": {"aws:CurrentTime": "2020-04-01T00:00:00Z"},
                "DateLessThan": {"aws:CurrentTime": "2020-06-30T23:59:59Z"}
            }
        }
    ]
}
```

------

**注記**  
日付条件演算子でポリシー変数を使用することはできません。詳細については、「[条件の要素](reference_policies_variables.md#policy-vars-conditionelement)」を参照してください。

# AWS: AWS リージョンの有効化と無効化を許可する
<a name="reference_policies_examples_aws-enable-disable-regions"></a>

この例は、管理者がアジアパシフィック (香港) リージョン (ap-east-1) を有効化および無効化できるようにする ID ベースポリシーの作成方法を示しています。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。この設定は、AWS マネジメントコンソール の [**アカウント設定**] ページに表示されます。このページには、アカウント管理者のみが表示および管理する必要がある機密アカウントレベルの情報が含まれています。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

**重要**  
デフォルトで有効になっているリージョンを有効または無効にすることはできません。デフォルトで*無効*になっているリージョンのみを含めることができます。詳細については、「AWS 全般のリファレンス」の「[AWS リージョンの管理](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableDisableHongKong",
            "Effect": "Allow",
            "Action": [
                "account:EnableRegion",
                "account:DisableRegion"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {"account:TargetRegion": "ap-east-1"}
            }
        },
        {
            "Sid": "ViewConsole",
            "Effect": "Allow",
            "Action": [
                "account:ListRegions"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# AWS: MFA で認証された IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします
<a name="reference_policies_examples_aws_my-sec-creds-self-manage"></a>

この例は、[多要素認証 (MFA)](id_credentials_mfa.md) を使用して認証された IAM ユーザーが、**[セキュリティ認証情報]** ページで自分の認証情報を管理できるようにする ID ベースポリシーを作成する方法を示しています。この AWS マネジメントコンソール ページには、アカウント ID や正規ユーザー ID などのアカウント情報が表示されます。ユーザーは、自分のパスワード、アクセスキー、MFA デバイス、X.509 証明書、SSH キー、および Git 認証情報を表示および編集することもできます。この例では、必要なアクセス許可がポリシーに含まれているページ上のすべての情報を表示および編集する手順について説明します。また、AWS で他のオペレーションを実行する前に、ユーザーに MFA を使用した設定と認証を要求します。ユーザーに MFA を使用せずに自らの認証情報を管理することを許可するには、「[AWS: IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage-no-mfa.md)」を参照してください。

ユーザーが **[セキュリティ認証情報]** ページにアクセスする方法については、「[IAM ユーザー自身によるパスワードの変更方法 (コンソール)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)」を参照してください。

**注記**  
このポリシー例では、初めて AWS マネジメントコンソール にサインインする際のパスワードのリセットをユーザーに許可していません。新しいユーザーがサインインするまで、当該ユーザーにアクセス権を許可しないことをお勧めします。詳細については、「[IAM ユーザーを安全に作成するにはどうすればよいですか?](troubleshoot.md#troubleshoot_general_securely-create-iam-users)」を参照してください。また、これにより失効したパスワードを持つユーザーは、サインイン中にパスワードをリセットできなくなります。この操作を許可するには、`iam:ChangePassword` と `iam:GetAccountPasswordPolicy` をステートメント `DenyAllExceptListedIfNoMFA` に追加します。ただし、ユーザーが多要素認証（MFA） なしで自分のパスワードを変更できるようになると、セキュリティ上のリスクが生じる可能性があるためこれを推奨しません。
このポリシーをプログラムによるアクセスに使用する場合は、[https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) を呼び出して MFA で認証します。詳細については、[MFA を使用した安全な API アクセス](id_credentials_mfa_configure-api-require.md) を参照してください。

**このポリシーで行うこと**
+ この `AllowViewAccountInfo` ステートメントでは、ユーザーにアカウントレベルの情報を表示します。これらのアクセス許可は、リソース ARN をサポートしていないか、または指定する必要がないため、独自のステートメントに含まれている必要があります。代わりに `"Resource" : "*"` を指定するアクセス許可を使用します。このステートメントには、ユーザーが特定の情報を表示できるようにする以下のアクションが含まれています。
  + `GetAccountPasswordPolicy` – IAM ユーザーパスワードを変更しながら、アカウントのパスワード要件を表示します。
  + `ListVirtualMFADevices` – ユーザーに対して有効になっている仮想 MFA デバイスに関する詳細を表示します。
+ `AllowManageOwnPasswords` ステートメントを使用すると、ユーザーは自分のパスワードを変更できます。このステートメントには `GetUser` アクションも含まれています。これは、**[My security credentials]** (セキュリティ認証情報) ページのほとんどの情報を表示するために必要です。
+ この `AllowManageOwnAccessKeys` ステートメントにより、ユーザーは自分のアクセスキーを作成、更新、削除できます。ユーザーは指定されたアクセスキーの最後の使用時の情報を取得することもできます。
+ この `AllowManageOwnSigningCertificates` ステートメントにより、ユーザーは自分のデジタル署名用証明書をアップロード、更新、削除できます。
+ この `AllowManageOwnSSHPublicKeys` ステートメントにより、ユーザーは自分の CodeCommit の SSH パブリックキーをアップロード、更新、削除できます。
+ `AllowManageOwnGitCredentials` ステートメントにより、ユーザーは自分の CodeCommit の Git 認証情報をアップロード、更新、削除できます。
+ この `AllowManageOwnVirtualMFADevice` ステートメントにより、ユーザーは自分の仮想 MFA デバイスを作成できます。このステートメントのリソース ARN によって、ユーザーが任意の名前の MFA デバイスを作成できますが、ポリシー内の他のステートメントでは、ユーザーはデバイスを現在サインインしているユーザーにしかアタッチできません。
+ この `AllowManageOwnUserMFA` ステートメントでは、ユーザーは自分のユーザーの仮想、U2F、またはハードウェア MFA デバイスを表示または管理できます。このステートメントのリソース ARN は、ユーザー自身の IAM ユーザーにのみアクセスを許可します。ユーザーは他のユーザーの MFA デバイスを表示または管理することはできません。
+ `DenyAllExceptListedIfNoMFA` ステートメントは、ユーザーが MFA でサインインしていない***場合のみ***、いくつかのリストされたアクションを除いて、すべての AWS のサービスのすべてのアクションへのアクセスを拒否します。このステートメントでは、`"Deny"` と `"NotAction"` の組み合わせを使用して、表示されていないすべてのアクションへのアクセスを明示的に拒否しています。リストされている項目は、このステートメントによって拒否または許可されていません。ただし、アクションはポリシー内の他のステートメントによって許可されています。このステートメントのロジックの詳細については、「[Deny での NotAction の使用](reference_policies_elements_notaction.md)」を参照してください。ユーザーが MFA でサインインしている場合、`Condition` テストは失敗し、このステートメントはアクションを拒否しません。この場合、ユーザーの他のポリシーまたは文によってユーザーのアクセス許可が決まります。

  このステートメントは、ユーザーが MFA にサインインしていないときに、リストされているアクションのみを実行できることを保証します。さらに、他のステートメントまたはポリシーがそれらのアクションへのアクセスを許可している場合にのみ、リストされているアクションを実行できます。`iam:ChangePassword` アクションは MFA 認可なしには許可されないため、サインイン時にユーザーがパスワードを作成することはできません。

  `...IfExists` バージョンの `Bool` 演算子により、`aws:MultiFactorAuthPresent` キーが見つからない場合、条件は必ず true を返します。つまり､アクセスキーなどの長期認証情報を使用して API にアクセスするユーザーは IAM 以外の API オペレーションへのアクセスを拒否されます。

このポリシーでは、IAM コンソールで **[Users]** (ユーザー) ページを表示したり、そのページを使用して自分のユーザー情報にアクセスすることはできません。これを許可するには、 `iam:ListUsers` アクションを `AllowViewAccountInfo` ステートメントと `DenyAllExceptListedIfNoMFA` ステートメントに追加します。また、ユーザーが自分のユーザーページで自分のパスワードを変更することはできません。これを許可するには、`iam:GetLoginProfile` および `iam:UpdateLoginProfile` アクションを `AllowManageOwnPasswords` ステートメントに追加します。ユーザーが MFA を使用してサインインしなくても自分のユーザーページから自分のパスワードを変更できるようにするには、`DenyAllExceptListedIfNoMFA` ステートメントに`iam:UpdateLoginProfile` アクションを追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowViewAccountInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowManageOwnPasswords",
            "Effect": "Allow",
            "Action": [
                "iam:ChangePassword",
                "iam:GetUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:GetAccessKeyLastUsed"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSigningCertificates",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSigningCertificate",
                "iam:ListSigningCertificates",
                "iam:UpdateSigningCertificate",
                "iam:UploadSigningCertificate"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSSHPublicKeys",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSSHPublicKey",
                "iam:GetSSHPublicKey",
                "iam:ListSSHPublicKeys",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnGitCredentials",
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceSpecificCredential",
                "iam:DeleteServiceSpecificCredential",
                "iam:ListServiceSpecificCredentials",
                "iam:ResetServiceSpecificCredential",
                "iam:UpdateServiceSpecificCredential"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnVirtualMFADevice",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice"
            ],
            "Resource": "arn:aws:iam::*:mfa/*"
        },
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:GetMFADevice",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

# AWS: 特定の日付内で MFA を使用する特定のアクセスを許可する
<a name="reference_policies_examples_aws_mfa-dates"></a>

この例は、論理的な `AND` を使用して評価される複数の条件を使用する ID ベースポリシーを作成する方法を示しています。これにより、`SERVICE-NAME-1` という名前のサービスにフルアクセスでき、`ACTION-NAME-A` という名前のサービスの `ACTION-NAME-B` および `SERVICE-NAME-2` アクションにアクセスすることができます。これらのアクションは、[多要素認証 (MFA)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) を使用してユーザーが認証された場合にのみ許可されます。アクセスは、2017 年 7 月 1 日から 2017 年 12 月 31 日 (UTC、7 月 1 日と 12 月 31 日を含む) までの間に発生するアクションに限定されます。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

IAM ポリシーの `Condition` ブロック内で複数の条件を使用する方法については、「[条件内の複数の値](reference_policies_elements_condition.md#Condition-multiple-conditions)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "service-prefix-1:*",
            "service-prefix-2:action-name-a",
            "service-prefix-2:action-name-b"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {"aws:MultiFactorAuthPresent": true},
            "DateGreaterThan": {"aws:CurrentTime": "2017-07-01T00:00:00Z"},
            "DateLessThan": {"aws:CurrentTime": "2017-12-31T23:59:59Z"}
        }
    }
}
```

------

# AWS: IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします
<a name="reference_policies_examples_aws_my-sec-creds-self-manage-no-mfa"></a>

この例は、IAM ユーザーが **[セキュリティ認証情報]** ページで自分のすべての認証情報を管理できるようにする ID ベースポリシーを作成する方法を示しています。この AWS マネジメントコンソール ページには、アカウント ID や正規ユーザー ID などのアカウント情報が表示されます。ユーザーは、自分のパスワード、アクセスキー、X.509 証明書、SSH キー、および Git 認証情報を表示および編集することもできます。この例では、ユーザーの MFA デバイス*以外の*必要なアクセス許可がポリシーに含まれているページ上のすべての情報を表示および編集する手順について説明します。ユーザーが MFA を使用して自らのすべての認証情報を管理することを許可するには、「[AWS: MFA で認証された IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage.md)」を参照してください。

ユーザーが **[セキュリティ認証情報]** ページにアクセスする方法については、「[IAM ユーザー自身によるパスワードの変更方法 (コンソール)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)」を参照してください。

**このポリシーで行うこと**
+ この `AllowViewAccountInfo` ステートメントでは、ユーザーにアカウントレベルの情報を表示します。これらのアクセス許可は、リソース ARN をサポートしていないか、または指定する必要がないため、独自のステートメントに含まれている必要があります。代わりに `"Resource" : "*"` を指定するアクセス許可を使用します。このステートメントには、ユーザーが特定の情報を表示できるようにする以下のアクションが含まれています。
  + `GetAccountPasswordPolicy` – IAM ユーザーパスワードを変更しながら、アカウントのパスワード要件を確認します。
  + `GetAccountSummary` – アカウント ID とアカウントの表示 [正規ユーザー ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId)。
+ `AllowManageOwnPasswords` ステートメントを使用すると、ユーザーは自分のパスワードを変更できます。このステートメントには `GetUser` アクションも含まれています。これは、**[My security credentials]** (セキュリティ認証情報) ページのほとんどの情報を表示するために必要です。
+ この `AllowManageOwnAccessKeys` ステートメントにより、ユーザーは自分のアクセスキーを作成、更新、削除できます。ユーザーは指定されたアクセスキーの最後の使用時の情報を取得することもできます。
+ この `AllowManageOwnSigningCertificates` ステートメントにより、ユーザーは自分のデジタル署名用証明書をアップロード、更新、削除できます。
+ この`AllowManageOwnSSHPublicKeys` ステートメントにより、ユーザーは自分の CodeCommit の SSH パブリックキーをアップロード、更新、削除できます。
+ この `AllowManageOwnGitCredentials` ステートメントにより、ユーザーは自分の CodeCommit の Git 認証情報をアップロード、更新、削除できます。

このポリシーでは、ユーザーは自分の MFA デバイスを表示または管理できません。このポリシーでは、IAM コンソールで **[Users]** (ユーザー) ページを表示したり、そのページを使用して自分のユーザー情報にアクセスすることもできません。これを許可するには、`iam:ListUsers` アクションを `AllowViewAccountInfo` ステートメントに追加します。また、ユーザーが自分のユーザーページで自分のパスワードを変更することはできません。これを許可するには、`iam:CreateLoginProfile`、`iam:DeleteLoginProfile`、`iam:GetLoginProfile`、および `iam:UpdateLoginProfile` アクションを `AllowManageOwnPasswords` ステートメントに追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowViewAccountInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:GetAccountSummary"       
            ],
            "Resource": "*"
        },       
        {
            "Sid": "AllowManageOwnPasswords",
            "Effect": "Allow",
            "Action": [
                "iam:ChangePassword",
                "iam:GetUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:GetAccessKeyLastUsed"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSigningCertificates",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSigningCertificate",
                "iam:ListSigningCertificates",
                "iam:UpdateSigningCertificate",
                "iam:UploadSigningCertificate"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSSHPublicKeys",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSSHPublicKey",
                "iam:GetSSHPublicKey",
                "iam:ListSSHPublicKeys",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnGitCredentials",
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceSpecificCredential",
                "iam:DeleteServiceSpecificCredential",
                "iam:ListServiceSpecificCredentials",
                "iam:ResetServiceSpecificCredential",
                "iam:UpdateServiceSpecificCredential"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# AWS: MFA で認証された IAM ユーザーが [セキュリティ認証情報] ページで自分の MFA デバイスを管理できるようにします
<a name="reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only"></a>

この例は、[多要素認証 (MFA)](id_credentials_mfa.md) によって認証された IAM ユーザーが **[セキュリティ認証情報]** ページで自分の MFA デバイスを管理できるようにする ID ベースポリシーを作成する方法を示しています。この AWS マネジメントコンソール ページにはアカウントとユーザー情報が表示されますが、ユーザーは自分の MFA デバイスを表示および編集することしかできません。ユーザーに MFA を使用して自らのすべての認証情報を管理することを許可するには、「[AWS: MFA で認証された IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage.md)」を参照してください。

**注記**  
このポリシーを設定した IAM ユーザーが MFA 認証されていない場合、このポリシーは、MFA を使用した認証に必要なアクションを除いて、すべての AWS アクションへのアクセスを拒否します。AWS CLI および AWS API を使用するには、IAM ユーザーはまず AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) オペレーションを使用して MFA トークンを取得し、次にそのトークンを使用して目的のオペレーションを認証する必要があります。リソースベースポリシーや他の ID ベースポリシーなどの他のポリシーを使用して、他のサービスでのアクションを許可できます。IAM ユーザーが MFA 認証されていない場合、同ポリシーはそのアクセスを拒否します。

ユーザーが **[セキュリティ認証情報]** ページにアクセスする方法については、「[IAM ユーザー自身によるパスワードの変更方法 (コンソール)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)」を参照してください。

**このポリシーで行うこと**
+ この `AllowViewAccountInfo` ステートメントでは、ユーザーに対して有効になっている仮想 MFA デバイスに関する詳細を表示することを許可します。このアクセス許可は、リソース ARN の指定をサポートしていないため、独自のステートメント内になければなりません。または `"Resource" : "*"` を指定する必要があります。
+ この `AllowManageOwnVirtualMFADevice` ステートメントにより、ユーザーは自分の仮想 MFA デバイスを作成できます。このステートメントのリソース ARN によって、ユーザーが任意の名前の MFA デバイスを作成できますが、ポリシー内の他のステートメントでは、ユーザーはデバイスを現在サインインしているユーザーにしかアタッチできません。
+ この `AllowManageOwnUserMFA` ステートメントでは、ユーザーは自分のユーザーの仮想、U2F、またはハードウェア MFA デバイスを表示または管理できます。このステートメントのリソース ARN は、ユーザー自身の IAM ユーザーにのみアクセスを許可します。ユーザーは他のユーザーの MFA デバイスを表示または管理することはできません。
+ `DenyAllExceptListedIfNoMFA` ステートメントは、ユーザーが MFA でサインインしていない***場合のみ***、いくつかのリストされたアクションを除いて、すべての AWS のサービスのすべてのアクションへのアクセスを拒否します。このステートメントでは、`"Deny"` と `"NotAction"` の組み合わせを使用して、表示されていないすべてのアクションへのアクセスを明示的に拒否しています。リストされている項目は、このステートメントによって拒否または許可されていません。ただし、アクションはポリシー内の他のステートメントによって許可されています。このステートメントのロジックの詳細については、「[Deny での NotAction の使用](reference_policies_elements_notaction.md)」を参照してください。ユーザーが MFA でサインインしている場合、`Condition` テストは失敗し、このステートメントはアクションを拒否しません。この場合、ユーザーの他のポリシーまたは文によってユーザーのアクセス許可が決まります。

  このステートメントは、ユーザーが MFA にサインインしていないときに、リストされているアクションのみを実行できることを保証します。さらに、他のステートメントまたはポリシーがそれらのアクションへのアクセスを許可している場合にのみ、リストされているアクションを実行できます。

  `...IfExists` バージョンの `Bool` 演算子により、`aws:MultiFactorAuthPresent` キーが見つからない場合、条件は必ず true を返します。つまり､アクセスキーなどの長期認証情報を使用して API オペレーションにアクセスするユーザーは IAM 以外の API オペレーションへのアクセスを拒否されます。

このポリシーでは、IAM コンソールで [**ユーザー**] ページを表示したり、そのページを使用して自分のユーザー情報にアクセスすることはできません。これを許可するには、 `iam:ListUsers` アクションを `AllowViewAccountInfo` ステートメントと `DenyAllExceptListedIfNoMFA` ステートメントに追加します。

**警告**  
MFA 認証なしで MFA デバイスを削除するためのアクセス許可を追加しないでください。このポリシーを持つユーザーは、仮想化 MFA デバイスを割り当てようとする場合に、`iam:DeleteVirtualMFADevice` を実行する権限がないというエラーが表示されることがあります。このような場合には、そのアクセス許可を `DenyAllExceptListedIfNoMFA` ステートメントに追加**しないようにします**。MFA を使用して認証されていないユーザーは、MFA デバイスを削除してはいけません。ユーザーが以前に自分のユーザーに仮想 MFA デバイスの割り当てを開始して処理をキャンセルした場合、このエラーが表示されることがあります。この問題を解決するには、ユーザーまたは他の管理者が AWS CLI または AWS API を使用してユーザーの既存の仮想化 MFA デバイスを削除する必要があります。詳細については、「[iam:DeleteVirtualMFADevice を実行することを認可されていません](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowViewAccountInfo",
            "Effect": "Allow",
            "Action": "iam:ListVirtualMFADevices",
            "Resource": "*"
        },
        {
            "Sid": "AllowManageOwnVirtualMFADevice",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice"
            ],
            "Resource": "arn:aws:iam::*:mfa/*"
        },
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:GetMFADevice",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}
            }
        }
    ]
}
```

------

# AWS: IAM ユーザーが [セキュリティ認証情報] ページで自分のコンソールパスワードを変更できるようにします
<a name="reference_policies_examples_aws_my-sec-creds-self-manage-password-only"></a>

この例は、IAM ユーザーが **[セキュリティ認証情報]** ページで自分の AWS マネジメントコンソール パスワードを変更できるようにする ID ベースポリシーを作成する方法を示しています。この AWS マネジメントコンソール ページにはアカウントとユーザー情報が表示されますが、ユーザーは自分のパスワードにアクセスすることしかできません。ユーザーに MFA を使用して自らのすべての認証情報を管理することを許可するには、「[AWS: MFA で認証された IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage.md)」を参照してください。ユーザーに MFA を使用せずに自らの認証情報を管理することを許可するには、「[AWS: IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage-no-mfa.md)」を参照してください。

ユーザーが **[セキュリティ認証情報]** ページにアクセスする方法については、「[IAM ユーザー自身によるパスワードの変更方法 (コンソール)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)」を参照してください。

**このポリシーで行うこと**
+ `ViewAccountPasswordRequirements` ステートメントでは、ユーザーは自分の IAM ユーザーパスワードを変更しながらアカウントパスワードの要件を確認できます。
+ `ChangeOwnPassword` ステートメントを使用すると、ユーザーは自分のパスワードを変更できます。このステートメントには `GetUser` アクションも含まれています。これは、**[My security credentials]** (セキュリティ認証情報) ページのほとんどの情報を表示するために必要です。

このポリシーでは、IAM コンソールで [**ユーザー**] ページを表示したり、そのページを使用して自分のユーザー情報にアクセスすることはできません。これを許可するには、`iam:ListUsers` アクションを `ViewAccountPasswordRequirements` ステートメントに追加します。また、ユーザーが自分のユーザーページで自分のパスワードを変更することはできません。これを許可するには、`iam:GetLoginProfile` および `iam:UpdateLoginProfile` アクションを `ChangeOwnPasswords` ステートメントに追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewAccountPasswordRequirements",
            "Effect": "Allow",
            "Action": "iam:GetAccountPasswordPolicy",
            "Resource": "*"
        },
        {
            "Sid": "ChangeOwnPassword",
            "Effect": "Allow",
            "Action": [
                "iam:GetUser",
                "iam:ChangePassword"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# AWS: IAM ユーザーが [セキュリティ認証情報] ページで自分のパスワード、アクセスキー、および SSH パブリックキーを管理できるようにします
<a name="reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh"></a>

この例は、IAM ユーザーが **[セキュリティ認証情報]** ページで自分のパスワード、アクセスキー、および X.509 証明書を管理できるようにする ID ベースポリシーを作成する方法を示しています。この AWS マネジメントコンソール ページには、アカウント ID や正規ユーザー ID などのアカウント情報が表示されます。ユーザーは、自分のパスワード、アクセスキー、MFA デバイス、X.509 証明書、SSH キー、および Git 認証情報を表示および編集することもできます。このポリシー例には、パスワード、アクセスキー、および X.509 証明書のみを表示および編集するために必要なアクセス許可が含まれています。ユーザーに MFA を使用して自らのすべての認証情報を管理することを許可するには、「[AWS: MFA で認証された IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage.md)」を参照してください。ユーザーに MFA を使用せずに自らの認証情報を管理することを許可するには、「[AWS: IAM ユーザーが [セキュリティ認証情報] ページで自分の認証情報を管理できるようにします](reference_policies_examples_aws_my-sec-creds-self-manage-no-mfa.md)」を参照してください。

ユーザーが **[セキュリティ認証情報]** ページにアクセスする方法については、「[IAM ユーザー自身によるパスワードの変更方法 (コンソール)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)」を参照してください。

**このポリシーで行うこと**
+ この `AllowViewAccountInfo` ステートメントでは、ユーザーにアカウントレベルの情報を表示します。これらのアクセス許可は、リソース ARN をサポートしていないか、または指定する必要がないため、独自のステートメントに含まれている必要があります。代わりに `"Resource" : "*"` を指定するアクセス許可を使用します。このステートメントには、ユーザーが特定の情報を表示できるようにする以下のアクションが含まれています。
  + `GetAccountPasswordPolicy` – IAM ユーザーパスワードを変更しながら、アカウントのパスワード要件を確認します。
  + `GetAccountSummary` – アカウント ID とアカウントの表示 [正規ユーザー ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId)。
+ `AllowManageOwnPasswords` ステートメントを使用すると、ユーザーは自分のパスワードを変更できます。このステートメントには `GetUser` アクションも含まれています。これは、**[My security credentials]** (セキュリティ認証情報) ページのほとんどの情報を表示するために必要です。
+ この `AllowManageOwnAccessKeys` ステートメントにより、ユーザーは自分のアクセスキーを作成、更新、削除できます。ユーザーは指定されたアクセスキーの最後の使用時の情報を取得することもできます。
+ この `AllowManageOwnSSHPublicKeys` ステートメントにより、ユーザーは自分の CodeCommit の SSH パブリックキーをアップロード、更新、削除できます。

このポリシーでは、ユーザーは自分の MFA デバイスを表示または管理できません。このポリシーでは、IAM コンソールで **[Users]** (ユーザー) ページを表示したり、そのページを使用して自分のユーザー情報にアクセスすることもできません。これを許可するには、`iam:ListUsers` アクションを `AllowViewAccountInfo` ステートメントに追加します。また、ユーザーが自分のユーザーページで自分のパスワードを変更することはできません。これを許可するには、`iam:GetLoginProfile` および `iam:UpdateLoginProfile` アクションを `AllowManageOwnPasswords` ステートメントに追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowViewAccountInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:GetAccountSummary"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowManageOwnPasswords",
            "Effect": "Allow",
            "Action": [
                "iam:ChangePassword",
                "iam:GetUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:GetAccessKeyLastUsed"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSSHPublicKeys",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSSHPublicKey",
                "iam:GetSSHPublicKey",
                "iam:ListSSHPublicKeys",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# AWS: リクエストされたリージョンに基づいて、AWS へのアクセスを拒否する
<a name="reference_policies_examples_aws_deny-requested-region"></a>

この例は、`NotAction` を使用して指定したサービスのアクションを除く、[`aws:RequestedRegion` 条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion)を使用して指定したリージョン外のアクションへのアクセスを拒否する ID ベースポリシーを作成する方法を示しています。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーは、ステートメントにリスト*されていない*すべてのアクションへのアクセスを拒否する `NotAction` 効果がある `Deny` 要素を使用します。CloudFront、IAM、Route 53、および サポート サービスでのアクションは、物理的に AWS リージョンにある単一のエンドポイントを持つ一般的な `us-east-1` グローバルサービスであるため、拒否しないでください。これらのサービスに対するすべてのリクエストは `us-east-1` リージョンに対して行われるため、リクエストは `NotAction` 要素なしでは拒否されます。この要素を編集して、使用する他の AWS グローバルサービス (`budgets`、`globalaccelerator`、`importexport`、`organizations`、または `waf` など) のアクションを含めます。チャットアプリケーションの Amazon Q Developer や AWS Device Farm など、その他のグローバルサービスは、エンドポイントが `us-west-2` リージョンに物理的に配置されているグローバルサービスです。単一のグローバルエンドポイントを持つすべてのサービスについては、「AWS 全般のリファレンス」の「[AWS リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html)」を参照してください。`NotAction` 効果を持つ `Deny` 要素の使用の詳細については、「[IAM JSON ポリシー要素NotAction](reference_policies_elements_notaction.md)」を参照してください。

**重要**  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyAllOutsideRequestedRegions",
            "Effect": "Deny",
            "NotAction": [
                "cloudfront:*",
                "iam:*",
                "organizations:*",
                "route53:*",
                "support:*"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "aws:RequestedRegion": [
                        "eu-central-1",
                        "eu-west-1",
                        "eu-west-2",
                        "eu-west-3"
                    ]
                }
            }
        }
    ]
}
```

------

# AWS: 送信元 IP に基づいて AWS へのアクセスを拒否する
<a name="reference_policies_examples_aws_deny-ip"></a>

この例は、指定した IP 範囲外のプリンシパルからリクエストが送信された場合に、アカウントのすべての AWS のアクションへのアクセスを拒否する ID ベースポリシーを作成する方法を示しています。ポリシーは、会社の IP アドレスが指定された範囲内にある場合に有用です。この例では、リクエストは、CIDR 範囲 192.0.2.0/24 または 203.0.113.0/24 以外からでない限り拒否されます。ポリシーでは、オリジナルリクエスタ―の IP アドレスが保持されるため、[転送アクセスセッション](access_forward_access_sessions.md) を使用した AWS サービスからのリクエストは拒否されません。

`"Effect": "Deny"` と同じポリシーステートメントで負の条件を使用する際は注意してください。負の条件を使用すると、ポリシーステートメントで指定されたアクションは、指定されたものを*除く*すべての条件で明示的に拒否されます。

**重要**  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。

他のポリシーでアクションが許可されている場合、プリンシパルは IP アドレス範囲内からリクエストを実行することができます。AWS サービスは、プリンシパルの認証情報を使用してリクエストを実行することもできます。プリンシパルが IP 範囲外からリクエストを実行すると、リクエストは拒否されます。

ポリシーで `aws:SourceIp` キーが機能しない場合の情報など、`aws:SourceIp` 条件キーの使用の詳細については、「[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "192.0.2.0/24",
                    "203.0.113.0/24"
                ]
            }
        }
    }
}
```

------

# AWS: AWS Data Exchange を除くアカウント外の Amazon S3 リソースへのアクセスを拒否する
<a name="reference_policies_examples_resource_account_data_exch"></a>

この例では、AWS Data Exchange が通常のオペレーションに必要とするリソースを除いた、アカウントに属さない AWS のすべてのリソースへのアクセスを拒否する ID ベースのポリシーを作成する方法を示します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

条件キー `aws:ResourceOrgPaths` および `aws:ResourceOrgID` を使用して AWS Data Exchange 所有のリソースを考慮しながら、組織または組織単位内のリソースへのアクセスを制限するために、類似ポリシーを作成できます。

ご自分の環境で AWS Data Exchange を使用する場合、サービスはサービスアカウントが所有する Amazon S3 バケットなどのリソースを作成し、操作します。たとえば、AWS Data Exchange は、IAM プリンシパル (ユーザーまたはロール) に代わって AWS Data Exchange API を呼び出す AWS Data Exchange サービスが所有する Amazon S3 バケットに要求を送信します。その場合は、`aws:ResourceAccount`、`aws:ResourceOrgPaths`、`aws:ResourceOrgID` ポリシーを使用して、AWS Data Exchange が所有するリソースを考慮せず、サービスアカウントが所有するバケットへのアクセスを拒否します。
+ ステートメント `DenyAllAwsResourcesOutsideAccountExceptS3` では、ステートメントにリスト表示されておらず、またリスト表示されたアカウントに属していないすべてのアクションへのアクセスを明確に[拒否](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html)する効果を持つ `NotAction` 要素を使用します。`NotAction` 要素は、このステートメントの例外を示します。これらのアクションは、ステートメントの例外を示します。これは AWS Data Exchange によって作成されたリソースでアクションが実行されると、ポリシーによってアクションが拒否されるためです。
+ このステートメント `DenyAllS3ResoucesOutsideAccountExceptDataExchange` は、`ResourceAccount` および `CalledVia` の条件の組み合わせを使用して、前のステートメントで除外された 3 つの Amazon S3 アクションへのアクセスを拒否します。このステートメントは、そのリソースがリスト表示されたアカウントに属していない場合、そして呼び出しサービスが AWS Data Exchange でない場合にアクションを拒否します。このステートメントは、リソースがリスト表示されたアカウントに属しているか、リスト表示されているサービスプリンシパル `dataexchange.amazonaws.com` が操作を行う場合には、アクションを拒否しません。

**重要**  
このポリシーでは、アクションを許可しません。それは、リスト表示されたアカウントに属さないステートメントでリスト表示された、すべてのリソースへのアクセスを明確に拒否する `Deny` の効果を使用します。特定のリソースへのアクセスを許可する他のポリシーと組み合わせてこのポリシーを使用します。

次の例は、必要な Amazon S3 バケットへのアクセスを許可するためにポリシーを設定する方法を示しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAllAwsReourcesOutsideAccountExceptAmazonS3",
      "Effect": "Deny",
      "NotAction": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "111122223333"
          ]
        }
      }
    },
    {
      "Sid": "DenyAllS3ResourcesOutsideAccountExceptDataExchange",
      "Effect": "Deny",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "111122223333"
          ]
        },
        "ForAllValues:StringNotEquals": {
          "aws:CalledVia": [
            "dataexchange.amazonaws.com"
          ]
        }
      }
    }
  ]
}
```

------

# AWS Data Pipeline: ユーザーが作成していない DataPipeline パイプラインへのアクセスを拒否する
<a name="reference_policies_examples_datapipeline_not-owned"></a>

この例では、ユーザーが作成していないパイプラインへのアクセスを拒否する ID ベースポリシーを作成する方法を示します。`PipelineCreator` フィールドの値が IAM ユーザー名と一致する場合、指定されたアクションは拒否されません。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。

**重要**  
このポリシーでは、アクションを許可しません。特定のアクションを許可する他のポリシーと組み合わせてこのポリシーを使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ExplicitDenyIfNotTheOwner",
            "Effect": "Deny",
            "Action": [
                "datapipeline:ActivatePipeline",
                "datapipeline:AddTags",
                "datapipeline:DeactivatePipeline",
                "datapipeline:DeletePipeline",
                "datapipeline:DescribeObjects",
                "datapipeline:EvaluateExpression",
                "datapipeline:GetPipelineDefinition",
                "datapipeline:PollForTask",
                "datapipeline:PutPipelineDefinition",
                "datapipeline:QueryObjects",
                "datapipeline:RemoveTags",
                "datapipeline:ReportTaskProgress",
                "datapipeline:ReportTaskRunnerHeartbeat",
                "datapipeline:SetStatus",
                "datapipeline:SetTaskStatus",
                "datapipeline:ValidatePipelineDefinition"
            ],
            "Resource": ["*"],
            "Condition": {
                "StringNotEquals": {"datapipeline:PipelineCreator": "${aws:userid}"}
            }
        }
    ]
}
```

------

# Amazon DynamoDB: 特定のテーブルへのアクセスの許可
<a name="reference_policies_examples_dynamodb_specific-table"></a>

この例は、`MyTable` DynamoDB テーブルへのフルアクセスを許可する ID ベースポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

**重要**  
このポリシーは、DynamoDB テーブルで実行できるすべてのアクションを許可します。これらのアクションを確認するには、*Amazon DynamoDB デベロッパーガイド*の「[DynamoDB API の許可: アクション、リソース、条件リファレンス](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/api-permissions-reference.html)」を参照してください。個別のアクションを一覧表示して、同じアクセス許可を提供することができます。ただし、`Action` 要素でワイルドカード (`*`) を使用している場合 (`"dynamodb:List*"` など)、DynamoDB で新しい List アクションが追加されても、ポリシーを更新する必要はありません。

このポリシーは、指定された名前で存在する DynamoDB テーブルでのみアクションを許可します。ユーザーに [DynamoDB 全体への `Read` アクセスを許可するために、AmazonDynamoDBReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess) AWS 管理ポリシーをアタッチすることもできます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListAndDescribe",
            "Effect": "Allow",
            "Action": [
                "dynamodb:List*",
                "dynamodb:DescribeReservedCapacity*",
                "dynamodb:DescribeLimits",
                "dynamodb:DescribeTimeToLive"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SpecificTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGet*",
                "dynamodb:DescribeStream",
                "dynamodb:DescribeTable",
                "dynamodb:Get*",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:BatchWrite*",
                "dynamodb:CreateTable",
                "dynamodb:Delete*",
                "dynamodb:Update*",
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/MyTable"
        }
    ]
}
```

------

# Amazon DynamoDB: 特定の属性へのアクセスの許可
<a name="reference_policies_examples_dynamodb_attributes"></a>

この例では、特定の DynamoDB 属性へのアクセスを許可する ID ベースポリシーを作成する方法を示します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

`dynamodb:Select` 要件により、インデックスの射影からなど、API アクションが許可されていない属性を返さないようにします。DynamoDB 条件キーの詳細については、『* Amazon DynamoDB 開発者ガイド*』の「[条件の指定: 条件キーの使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html#FGAC_DDB.ConditionKeys)」を参照してください。IAM ポリシーの `Condition` ブロック内の複数条件および複数条件キーの使用については、[条件内の複数の値](reference_policies_elements_condition.md#Condition-multiple-conditions) を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Query",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:BatchWriteItem"
            ],
            "Resource": ["arn:aws:dynamodb:*:*:table/table-name"],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:Attributes": [
                        "column-name-1",
                        "column-name-2",
                        "column-name-3"
                    ]
                },
                "StringEqualsIfExists": {"dynamodb:Select": "SPECIFIC_ATTRIBUTES"}
            }
        }
    ]
}
```

------

# Amazon DynamoDB: Amazon Cognito ID に基づいて DynamoDB への項目レベルのアクセスを許可する
<a name="reference_policies_examples_dynamodb_items"></a>

この例は、Amazon Cognito アイデンティティプールのユーザー ID に基づいて `MyTable` DynamoDB テーブルへのアイテムレベルのアクセスを許可する ID ベースポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

このポリシーを使用するには、Amazon Cognito アイデンティティプールのユーザー ID がパーティションキーとなるように DynamoDB テーブルを作成する必要があります。詳細については、*Amazon DynamoDB 開発者ガイド*の [テーブルの作成](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.CreateTable)を参照してください。

 条件キーの詳細については、『[Amazon DynamoDB 開発者ガイド](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html#FGAC_DDB.ConditionKeys)』の「*条件の指定: 条件キーの使用*」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": ["arn:aws:dynamodb:*:*:table/MyTable"],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": ["${cognito-identity.amazonaws.com:sub}"]
                }
            }
        }
    ]
}
```

------

# Amazon EC2: タグに基づいて EC2 インスタンスに Amazon EBS ボリュームをアタッチまたはデタッチする
<a name="reference_policies_examples_ec2_ebs-owner"></a>

この例は、EBS ボリュームの所有者によって、開発インスタンス (`Department=Development`) としてタグ付けされた EC2 インスタンスのタグ `VolumeUser` を使用して定義された EBS ボリュームをアタッチまたはデタッチすることを許可する ID ベースポリシーの作成方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

Amazon EC2 リソースへのアクセスを制御する IAM ポリシーの作成の詳細については、「Amazon EC2 ユーザーガイド」の [Amazon EC2 リソースへのアクセスの制御](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html)に関するページを参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "ec2:DetachVolume"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/Department": "Development"}
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "ec2:DetachVolume"
            ],
            "Resource": "arn:aws:ec2:*:*:volume/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/VolumeUser": "${aws:username}"}
            }
        }
    ]
}
```

------

# Amazon EC2: 特定のサブネットで EC2 インスタンスを起動することをプログラムによりコンソールで許可する
<a name="reference_policies_examples_ec2_instances-subnet"></a>

この例では、特定のサブネットですべての EC2 オブジェクトと EC2 インスタンスの起動を許可する ID ベースのポリシーを作成する方法を示します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/subnet-subnet-id",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        }
    ]
}
```

------

# Amazon EC2: 特定のキーと値のペアでタグ付けされた EC2 セキュリティグループの管理をプログラムによりコンソールで許可する
<a name="reference_policies_examples_ec2_securitygroups-vpc"></a>

この例では、同じタグを持つセキュリティグループに対して、特定のアクションを実行するためのアクセス許可をユーザーに与える、ID ベースのポリシーを作成する方法を示します。このポリシーは、Amazon EC2 コンソールでセキュリティグループを表示し、インバウンドおよびアウトバウンドのルールを追加および削除し、タグ `Department=Test` を含む既存のセキュリティグループのルール説明を変更するアクセス許可をユーザーに付与します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeSecurityGroups",
         "ec2:DescribeSecurityGroupRules",
         "ec2:DescribeTags"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:AuthorizeSecurityGroupIngress", 
         "ec2:RevokeSecurityGroupIngress", 
         "ec2:AuthorizeSecurityGroupEgress", 
         "ec2:RevokeSecurityGroupEgress", 
         "ec2:ModifySecurityGroupRules",
         "ec2:UpdateSecurityGroupRuleDescriptionsIngress", 
         "ec2:UpdateSecurityGroupRuleDescriptionsEgress"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
      ],
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/Department": "Test"
         }
      }
     },     
     {
      "Effect": "Allow",
      "Action": [
         "ec2:ModifySecurityGroupRules"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:security-group-rule/*"
      ]
     }
   ]
}
```

------

# Amazon EC2: プログラムおよびコンソールでユーザーがタグ付けされた EC2 インスタンスの起動や停止を許可する
<a name="reference_policies_examples_ec2_tag-owner"></a>

この例は、IAM ユーザーが EC2 インスタンスを開始または停止できるようにする ID ベースのポリシーを作成する方法を示していますが、インスタンスタグ `Owner` にそのユーザーのユーザー名の値がある場合に限ります。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "${aws:username}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}
```

------

# EC2: タグに基づくインスタンスの開始または停止
<a name="reference_policies_examples_ec2-start-stop-tags"></a>

この例は、タグのキーバリューのペア `Department = Data` を持つプリンシパルによってのみ、タグのキーバリューペア `Project = DataAnalytics` を持つインスタンスの開始または停止を許可する ID ベースのポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

ポリシーの条件によって、条件のいずれも true の場合には true が返ります。インスタンスには `Project=DataAnalytics` タグが必要です。さらに、リクエストを行うIAM プリンシパル (ユーザーまたはロール) には、`Department=Data` タグが必要です。

**注記**  
ベストプラクティスとして、ユーザーの特定のタグの有無に対応できるように、`aws:PrincipalTag` 条件キーを持つポリシーを IAM グループにアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StartStopIfTags",
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Project": "DataAnalytics",
                    "aws:PrincipalTag/Department": "Data"
                }
            }
        }
    ]
}
```

------

# EC2: 一致するプリンシパルタグとリソースタグに基づいてインスタンスを開始または停止する
<a name="reference_policies_examples_ec2-start-stop-match-tags"></a>

この例では、インスタンスのリソースタグとプリンシパルのタグのタグキー `CostCenter` の値が同じである場合にプリンシパルが Amazon EC2 インスタンスの起動または停止を許可する ID ベースのポリシーを作成する方法を示します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

**注記**  
ベストプラクティスとして、ユーザーの特定のタグの有無に対応できるように、`aws:PrincipalTag` 条件キーを持つポリシーを IAM グループにアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "ec2:startInstances",
            "ec2:stopInstances"
        ],
        "Resource": "*",
        "Condition": {"StringEquals": 
            {"aws:ResourceTag/CostCenter": "${aws:PrincipalTag/CostCenter}"}}
    }
}
```

------

# Amazon EC2: 特定のリージョンでの完全な EC2 アクセスをプログラムによりコンソールで許可する
<a name="reference_policies_examples_ec2_region"></a>

この例では、特定のリージョン内で完全な EC2 アクセスを許可する ID ベースのポリシーを作成する方法を示します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。リージョンコードの一覧については、[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions)の「*使用可能なリージョン*」を参照してください。

または、グローバル条件キー [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion), を使用することもできます。これは、すべての Amazon EC2 API アクションによってサポートされています。詳細については、[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-region)の「*例: 特定のリージョンへのアクセスの制限*」をご参照ください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "ec2:*",
            "Resource": "*",
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-2"
                }
            }
        }
    ]
}
```

------

# Amazon EC2: EC2 インスタンスの起動または停止、およびセキュリティグループの変更を、プログラムによりコンソールで許可する
<a name="reference_policies_examples_ec2_instance-securitygroup"></a>

この例では、特定の EC2 インスタンスの起動または停止、特定のセキュリティグループの変更を許可する ID ベースのポリシーを作成する方法を示します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSecurityGroupReferences",
        "ec2:DescribeStaleSecurityGroups"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress",
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/i-instance-id",
        "arn:aws:ec2:*:*:security-group/sg-security-group-id"
      ],
      "Effect": "Allow"
    }
  ]
}
```

------

# Amazon EC2: 特定の EC2 オペレーション (GetSessionToken) に対して MFA を必要とします。
<a name="reference_policies_examples_ec2_require-mfa"></a>

この例は、Amazon EC2 のすべての AWS API オペレーションへのフルアクセスを許可する ID ベースのポリシーを作成する方法を示しています。ただし、ユーザーが[多要素認証 (MFA) ](id_credentials_mfa.md)を使用して認証されていない場合は、`StopInstances` および `TerminateInstances` APIオペレーションへのアクセスを明示的に拒否します。これをプログラムで行うには、`GetSessionToken` オペレーションを呼び出すときにユーザーはオプションの `SerialNumber` および `TokenCode` 値を含める必要があります。このオペレーションでは、MFA を使用して認証された一時認証情報を返します。GetSessionToken の詳細については、「[信頼されていない環境でのユーザーの認証情報のリクエスト](id_credentials_temp_request.md#api_getsessiontoken)」を参照してください。

このポリシーで行うこと
+ この `AllowAllActionsForEC2` ステートメントではすべての Amazon EC2 アクションが許可されます。
+ `DenyStopAndTerminateWhenMFAIsNotPresent` ステートメントは、MFA コンテキストが欠落している場合に、`StopInstances` および `TerminateInstances` のアクションを拒否します。これは、多要素認証コンテキストがない場合 (MFA が使用されなかったことを意味します) にアクションが拒否されることを意味します。拒否が許可に優先します。

**注記**  
`Deny` ステートメントの `MultiFactorAuthPresent` の条件チェックは、MFA が使用されていなければ該当キーが存在せず、評価できないため、`{"Bool":{"aws:MultiFactorAuthPresent":false}}` となりません。その代わりに、`BoolIfExists` チェックを使用して、値をチェックする前にキーが存在するかどうか確認します。詳細については、「[IfExists 条件演算子](reference_policies_elements_condition_operators.md#Conditions_IfExists)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAllActionsForEC2",
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": "*"
        },
        {
            "Sid": "DenyStopAndTerminateWhenMFAIsNotPresent",
            "Effect": "Deny",
            "Action": [
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {"aws:MultiFactorAuthPresent": false}
            }
        }
    ]
}
```

------

# Amazon EC2: 終了する EC2 インスタンスを IP アドレス範囲に制限する
<a name="reference_policies_examples_ec2_terminate-ip"></a>

この例は、アクションを許可することで EC2 インスタンスを制限する ID ベースのポリシーを作成する方法を示していますが、リクエストが指定された IP 範囲外から送信された場合は明示的にアクセスを拒否します。ポリシーは、会社の IP アドレスが指定された範囲内にある場合に有用です。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーを、`ec2:TerminateInstances` アクションを許可する他のポリシー ([AmazonEC2FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2FullAccess) AWS 管理ポリシーなど) と組み合わせて使用すると、アクセスは拒否されます。これは、明示的な拒否のステートメントは許可のステートメントより優先されるからです。詳細については、「[AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法](reference_policies_evaluation-logic_policy-eval-denyallow.md)」を参照してください。

**重要**  
`aws:SourceIp` 条件キーは、お客様に代わって呼び出しを実行する AWS CloudFormation などの AWS のサービス へのアクセスを拒否します。`aws:SourceIp` 条件キーの使用に関する詳細については、「[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["ec2:TerminateInstances"],
            "Resource": ["*"]
        },
        {
            "Effect": "Deny",
            "Action": ["ec2:TerminateInstances"],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "192.0.2.0/24",
                        "203.0.113.0/24"
                    ]
                }
            },
            "Resource": ["*"]
        }
    ]
}
```

------

# IAM: Policy Simulator API へのアクセス
<a name="reference_policies_examples_iam_policy-sim"></a>

この例では、ユーザー、グループ、現在の AWS アカウント のロールにアタッチされたポリシーに、ポリシーシミュレータ API の使用を許可する ID ベースのポリシーを作成する方法を示します。このポリシーは、文字列として API に渡される機密性の低いポリシーをシミュレートするアクセスも許可します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iam:GetContextKeysForCustomPolicy",
                "iam:GetContextKeysForPrincipalPolicy",
                "iam:SimulateCustomPolicy",
                "iam:SimulatePrincipalPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

**注記**  
ユーザーに、現在の AWS アカウント のユーザー、グループ、ロールにアタッチされたポリシーをシミュレートする Policy Simulator コンソールへのアクセスを許可するには、「[IAM: Policy Simulator のコンソールへのアクセス](reference_policies_examples_iam_policy-sim-console.md)」を参照してください。

# IAM: Policy Simulator のコンソールへのアクセス
<a name="reference_policies_examples_iam_policy-sim-console"></a>

この例では、ユーザー、グループ、現在の AWS アカウント のロールにアタッチされたポリシーに、ポリシーシミュレータのコンソールの使用を許可する ID ベースのポリシーを作成する方法を示します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。

IAM Policy Simulator コンソールは [https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/) でアクセスできます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iam:GetGroup",
                "iam:GetGroupPolicy",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetUser",
                "iam:GetUserPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListAttachedRolePolicies",
                "iam:ListAttachedUserPolicies",
                "iam:ListGroups",
                "iam:ListGroupPolicies",
                "iam:ListGroupsForUser",
                "iam:ListRolePolicies",
                "iam:ListRoles",
                "iam:ListUserPolicies",
                "iam:ListUsers"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

# IAM: 特定のタグを持つロールを引き受ける
<a name="reference_policies_examples_iam-assume-tagged-role"></a>

この例では、IAM ユーザーがタグのキーバリューのペア `Project = ExampleCorpABC` を持つロールを引き受けることを許可する ID ベースのポリシーの作成方法を示します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このタグを持つロールがユーザーと同じアカウントに存在する場合、ユーザーはそのロールを引き受けることができます。このタグを持つロールがユーザー以外のアカウントに存在する場合は、追加のアクセス許可が必要です。クロスアカウントロールの信頼ポリシーでは、ユーザーまたはユーザーのアカウントのすべてのメンバーがそのロールを引き受けることも許可する必要があります。クロスアカウントアクセスのロールの使用に関する詳細情報は、「[所有している別の AWS アカウント内の IAM ユーザーに対するアクセス](id_roles_common-scenarios_aws-accounts.md)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AssumeTaggedRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {"iam:ResourceTag/Project": "ExampleCorpABC"}
            }
        }
    ]
}
```

------

# IAM: 複数のサービスへのアクセスをプログラムによりコンソールで許可および拒否する
<a name="reference_policies_examples_iam_multiple-services-console"></a>

この例では、IAM で複数のサービスへのフルアクセスと IAM の制限された自己管理アクセスを許可する ID ベースのポリシーを作成する方法を示します。また、Amazon S3 の `logs` バケットまたは Amazon EC2 の `i-1234567890abcdef0` インスタンスへのアクセスを拒否します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

**警告**  
このポリシーは、複数のサービスのすべてのアクションとリソースへのフルアクセスを許可します。このポリシーは、信頼されている管理者にのみ適用する必要があります。

このポリシーをアクセス許可の境界として使用して、アイデンティティベースのポリシーが IAM ユーザーに付与できる最大のアクセス許可の上限を定義できます。詳細については、「[アクセス許可の境界を使用した他のユーザーへの責任の委任](access_policies_boundaries.md#access_policies_boundaries-delegate)」を参照してください。ポリシーがユーザーのアクセス許可の境界として使用される場合、ステートメントは次の境界を定義します。
+ この `AllowServices` ステートメントでは、指定された AWS のサービスへのフルアクセスを許可します。つまり、これらのサービスにおけるユーザーのアクションは、ユーザーにアタッチされているアクセス許可ポリシーによってのみ制限されます。
+ `AllowIAMConsoleForCredentials` ステートメントは、すべての IAM ユーザーを一覧表示するためのアクセス権を付与します。このアクセス権は、AWS マネジメントコンソール で [**ユーザー**] ページに移動するために必要です。また、このアクセス権では、アカウントのパスワード要件を表示することができます。これは、ユーザーが自分のパスワードを変更する場合に必要です。
+ `AllowManageOwnPasswordAndAccessKeys` ステートメントは、自分のパスワードおよびプログラムを使用したアクセスキーの管理のみ許可します。これが重要であるのは、別のポリシーが IAM へのフルアクセスをユーザーに与えた場合、このユーザーは自分や他のユーザーのアクセス許可を変更できるようになるためです。このステートメントで、これを防止します。
+ `DenyS3Logs` ステートメントでは、`logs` バケットへのアクセスを明示的に拒否します。このポリシーはユーザーに会社の制限を適用します。
+ `DenyEC2Production` ステートメントでは、`i-1234567890abcdef0` インスタンスへのアクセスを明示的に拒否します。

このポリシーでは、他のサービスまたはアクションへのアクセスは許可されません。ポリシーがユーザーのアクセス許可の境界として使用されている場合、そのユーザーに関連付けられている他のポリシーがそれらのアクションを許可していても、AWS によってリクエストが拒否されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowServices",
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "cloudwatch:*",
                "ec2:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIAMConsoleForCredentials",
            "Effect": "Allow",
            "Action": [
                "iam:ListUsers",
                "iam:GetAccountPasswordPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowManageOwnPasswordAndAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:*AccessKey*",
                "iam:ChangePassword",
                "iam:GetUser",
                "iam:*LoginProfile*"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::logs",
                "arn:aws:s3:::logs/*"
            ]
        },
        {
            "Sid": "DenyEC2Production",
            "Effect": "Deny",
            "Action": "ec2:*",
            "Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0"
        }
    ]
}
```

------

# IAM: 特定のタグを持つユーザーに特定のタグを追加する
<a name="reference_policies_examples_iam-add-tag"></a>

この例は、タグ値 `Department`、`Marketing`、または `Development` を使用して、IAM ユーザーにタグキー `QualityAssurance` を追加できる ID ベースのポリシーを作成する方法を示しています。そのユーザーには、タグのキーバリューのペア `JobFunction = manager` がすでに含まれている必要があります。このポリシーを使用して、管理者が 3 つのいずれかの部門にのみ属していることを必須とすることができます。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

`ListTagsForAllUsers` ステートメントでは、アカウントのすべてのユーザーのタグを表示することができます。

`TagManagerWithSpecificDepartment` ステートメントの最初の条件では、`StringEquals` 条件演算子を使用します。この条件によって、条件のいずれも true の場合には true が返ります。タグ付けされているユーザーには、すでに `JobFunction=Manager` タグが含まれます。リクエストには、一覧表示されているタグ値のいずれかを持つタグキー `Department` が含まれている必要があります。

2 番目の条件では、`ForAllValues:StringEquals` 条件演算子を使用します。この条件では、リクエストのすべてのタグキーが、ポリシーのキーと一致する場合に true が返ります。つまり、リクエストのタグキーのみ `Department` である必要があります。`ForAllValues` の使用の詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListTagsForAllUsers",
            "Effect": "Allow",
            "Action": [
                "iam:ListUserTags",
                "iam:ListUsers"
            ],
            "Resource": "*"
        },
        {
            "Sid": "TagManagerWithSpecificDepartment",
            "Effect": "Allow",
            "Action": "iam:TagUser",
            "Resource": "*",
            "Condition": {"StringEquals": {
                "iam:ResourceTag/JobFunction": "Manager",
                "aws:RequestTag/Department": [
                    "Marketing",
                    "Development",
                    "QualityAssurance"
                    ]
                },
                "ForAllValues:StringEquals": {"aws:TagKeys": "Department"}
            }
        }
    ]
}
```

------

# IAM: 特定の値を持つ特定のタグを追加する
<a name="reference_policies_examples_iam-add-tag-user-role"></a>

この例は、タグキー `CostCenter` とタグ値 `A-123` またはタグ値 `B-456` のいずれかのみを IAM ユーザーまたはロールに追加できる ID ベースのポリシーを作成する方法を示しています。このポリシーを使用して、特定のタグキーとタグ値のセットにタグ付けを制限することができます。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

`ConsoleDisplay` ステートメントでは、アカウントのすべてのユーザーとロールのタグを表示することができます。

`AddTag` ステートメントの最初の条件では、`StringEquals` 条件演算子を使用します。この条件によって、一覧表示されているいずれかのタグ値を持つ `CostCenter` タグキーが含まれている場合に true が返ります。

2 番目の条件では、`ForAllValues:StringEquals` 条件演算子を使用します。この条件では、リクエストのすべてのタグキーが、ポリシーのキーと一致する場合に true が返ります。つまり、リクエストのタグキーのみ `CostCenter` である必要があります。`ForAllValues` の使用の詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConsoleDisplay",
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:GetUser",
                "iam:ListRoles",
                "iam:ListRoleTags",
                "iam:ListUsers",
                "iam:ListUserTags"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AddTag",
            "Effect": "Allow",
            "Action": [
                "iam:TagUser",
                "iam:TagRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/CostCenter": [
                        "A-123",
                        "B-456"
                    ]
                },
                "ForAllValues:StringEquals": {"aws:TagKeys": "CostCenter"}
            }
        }
    ]
}
```

------

# IAM: 特定のタグのみで新しいユーザーを作成する
<a name="reference_policies_examples_iam-new-user-tag"></a>

この例は、IAM ユーザーの作成を許可する ID ベースのポリシーを作成する方法を示していますが、タグキー `Department` と `JobFunction` の一方のみまたは両方を使用します。`Department` タグキーに、`Development` または `QualityAssurance` タグ値が含まれている必要があります。`JobFunction` タグキーに、`Employee` タグ値が含まれている必要があります。このポリシーを使用して、新しいユーザーに特定のジョブ機能および部門が含まれるよう義務付けることができます。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

ステートメントの最初の条件では、`StringEqualsIfExists` 条件演算子を使用します。キーが `Department` または `JobFunction` のタグがリクエストに存在する場合は、指定された値がタグに含まれている必要があります。どちらのキーも存在しない場合、この条件は true と評価されます。指定された条件キーのいずれかがリクエストに存在していても、許可されている値とは異なる値が含まれている場合にのみ、条件は、false と評価されます。`IfExists` の使用の詳細については、「[IfExists 条件演算子](reference_policies_elements_condition_operators.md#Conditions_IfExists)」を参照してください。

2 番目の条件では、`ForAllValues:StringEquals` 条件演算子を使用します。この条件では、リクエストの指定されたすべてのタグキーと、ポリシーの 1 つ以上の値が一致する場合に true が返ります。つまり、リクエストのすべてのタグがこのリストに含まれていることになります。ただし、リクエストには、リストのいずれかのタグのみ含めることができます。たとえば、`Department=QualityAssurance` タグのみを使用して、IAM ユーザーを作成できます。ただし、`JobFunction=employee` タグと `Project=core` タグを使用して、IAM ユーザーを作成することはできません。`ForAllValues` の使用の詳細については、「[複数値のコンテキストキーの演算子を設定する](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TagUsersWithOnlyTheseTags",
            "Effect": "Allow",
            "Action": [
                "iam:CreateUser",
                "iam:TagUser"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                    "aws:RequestTag/Department": [
                        "Development",
                        "QualityAssurance"
                    ],
                    "aws:RequestTag/JobFunction": "Employee"
                },
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "Department",
                        "JobFunction"
                    ]
                }
            }
        }
    ]
}
```

------

# IAM: 認証情報レポートを生成して取得する
<a name="reference_policies_examples_iam-credential-report"></a>

この例は、ユーザーに、AWS アカウント のすべての IAM ユーザーを一覧表示するレポートを生成してダウンロードすることを許可する ID ベースのポリシーを作成する方法を示しています。このレポートには、パスワード、アクセスキー、MFA デバイス、署名証明書など、ユーザー認証情報のステータスが含まれています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。

 認証情報レポートの詳細については、「[AWS アカウント の認証情報レポートを生成します。](id_credentials_getting-report.md)」を参照してください

------
#### [ JSON ]

****  

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

------

# IAM:: グループのメンバーシップをプログラムによりコンソールで管理することを許可する
<a name="reference_policies_examples_iam_manage-group-membership"></a>

この例では、`MarketingTeam` という名前のグループのメンバーシップを更新することを許可する ID ベースのポリシーの作成方法を示します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーで行うこと
+ この `ViewGroups` ステートメントにより、ユーザーは AWS マネジメントコンソール 内のすべてのユーザーとグループを一覧表示できます。また、アカウント内のユーザーに関する基本情報を表示することもできます。これらのアクセス許可は、リソース ARN をサポートしていないか、または指定する必要がないため、独自のステートメントに含まれている必要があります。代わりに `"Resource" : "*"` を指定するアクセス許可を使用します。
+ `ViewEditThisGroup` ステートメントを使用すると、ユーザーは `MarketingTeam` グループに関する情報を表示したり、そのグループにユーザーを追加したり削除したりできます。

このポリシーでは、ユーザーはユーザーまたは `MarketingTeam` グループのアクセス許可を表示または編集できません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewGroups",
            "Effect": "Allow",
            "Action": [
                "iam:ListGroups",
                "iam:ListUsers",
                "iam:GetUser",
                "iam:ListGroupsForUser"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ViewEditThisGroup",
            "Effect": "Allow",
            "Action": [
                "iam:AddUserToGroup",
                "iam:RemoveUserFromGroup",
                "iam:GetGroup"
            ],
            "Resource": "arn:aws:iam::*:group/MarketingTeam"
        }
    ]
}
```

------

# IAM: 特定のタグを管理する
<a name="reference_policies_examples_iam-manage-tags"></a>

この例は、`Department` IAM エンティティ (ユーザーおよびロール) からタグキーを使用して IAM タグを追加または削除することを許可する ID ベースのポリシーの、作成方法を示しています。このポリシーでは、`Department` タグの値は制限されません。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iam:TagUser",
            "iam:TagRole",
            "iam:UntagUser",
            "iam:UntagRole"

        ],
        "Resource": "*",
        "Condition": {"ForAllValues:StringEquals": {"aws:TagKeys": "Department"}}
    }
}
```

------

# IAM: IAM ロールを特定の AWS のサービスに渡す
<a name="reference_policies_examples_iam-passrole-service"></a>

この例は、IAM サービスロールを Amazon CloudWatch サービスに渡すことを許可する ID ベースのポリシーの作成方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

サービスロールは、IAM ロールを引き受けることができるプリンシパルとして AWS サービスを指定する ロールです。これにより、サービスはユーザーに代わってロールを引き受け、他のサービスのリソースにアクセスできます。Amazon CloudWatch がユーザーが渡すロールを引き受けるようにするには、ユーザーのロールの信頼ポリシーのプリンシパルとして `cloudwatch.amazonaws.com` サービスプリンシパルを指定する必要があります。サービスプリンシパルはサービスによって定義されます。サービスのサービスプリンシパルについては、そのサービスのドキュメントを参照してください。一部のサービスについては、[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md) を参照し、[**サービスにリンクされたロール**] 列で [**はい**] になっているサービスを探してください。サービスリンクロールに関するドキュメントをサービスで表示するには、リンクで **[はい]** を選択します。`amazonaws.com` を検索してサービスプリンシパルを表示します。

サービスにサービスロールを渡す方法の詳細については、「[AWS サービスにロールを渡すアクセス許可をユーザーに付与する](id_roles_use_passrole.md)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {"iam:PassedToService": "cloudwatch.amazonaws.com"}
            }
        }
    ]
}
```

------

# IAM: レポートなしでの IAM コンソールへの読み取り専用アクセスを許可します
<a name="reference_policies_examples_iam_read-only-console-no-reporting"></a>

この例は、IAM ユーザーが文字列 `Get` または `List` で始まるIAMアクションを実行できるようにする ID ベースのポリシーを作成する方法を示しています。ユーザーがコンソールを操作すると、コンソールは IAM にグループ、ユーザー、ロール、およびポリシーを一覧表示し、それらのリソースに関するレポートを生成するようにリクエストします。

アスタリスクは、ワイルドカードとして機能します。ポリシーで `iam:Get*` を使用すると、結果のアクセス許可には、`Get` や `GetUser` など、`GetRole` で始まるすべての IAM アクションが含まれます。ワイルドカードは、今後、新しいタイプのエンティティが IAM に追加される場合に役立ちます。この場合、ポリシーによって付与されたアクセス許可によって、ユーザーは自動的にそれらの新しいエンティティに関する詳細を一覧表示して取得できます。

このポリシーは、レポートまたはサービスの最終アクセス詳細を生成するために使用できません。これを許可する別のポリシーについては、[IAM: IAM コンソールへの読み取り専用アクセスを許可する](reference_policies_examples_iam_read-only-console.md) を参照してください。

------
#### [ JSON ]

****  

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

------

# IAM: IAM コンソールへの読み取り専用アクセスを許可する
<a name="reference_policies_examples_iam_read-only-console"></a>

この例は、IAM ユーザーが文字列 `Get`、`List`、または `Generate` で始まる IAM アクションを実行できるようにする ID ベースのポリシーを作成する方法を示しています。ユーザーが IAM コンソールを操作すると、コンソールはグループ、ユーザー、ロール、およびポリシーを一覧表示し、それらのリソースに関するレポートを生成するようにリクエストします。

アスタリスクは、ワイルドカードとして機能します。ポリシーで `iam:Get*` を使用すると、結果のアクセス許可には、`Get` や `GetUser` など、`GetRole` で始まるすべての アクションが含まれます。特に新しい種類のエンティティが今後 IAM に追加される場合は、ワイルドカードを使用すると便利です。この場合、ポリシーによって付与されたアクセス許可によって、ユーザーは自動的にそれらの新しいエンティティに関する詳細を一覧表示して取得できます。

このポリシーは、レポートまたはサービスの最終アクセス詳細を生成する権限を含むコンソールアクセスに使用します。アクションの生成を許可しない別のポリシーについては、[IAM: レポートなしでの IAM コンソールへの読み取り専用アクセスを許可します](reference_policies_examples_iam_read-only-console-no-reporting.md)。

------
#### [ JSON ]

****  

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

------

# IAM:: 特定の IAM ユーザーによるグループの管理をプログラムによりコンソールで許可する
<a name="reference_policies_examples_iam_users-manage-group"></a>

この例は、特定の IAM ユーザーが `AllUsers` グループを管理するための、特定の ID ベースのポリシーを作成する方法を示しています。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーで行うこと
+ `AllowAllUsersToListAllGroups` ステートメントでは、すべてのグループを一覧表示します。これはコンソールのアクセスに必要です。このアクセス許可は、リソース ARN をサポートしていないため、独自のステートメント内にある必要があります。代わりに `"Resource" : "*"` を指定するアクセス許可を使用します。
+ `AllowAllUsersToViewAndManageThisGroup` ステートメントは、グループリソースタイプに対して実行できるすべてのグループアクションを許可します。グループリソースタイプではなくユーザリソースタイプで実行できる `ListGroupsForUser` アクションは許可されていません。IAM アクションに指定できるリソースタイプの詳細については、「[AWS Identity and Access Management のアクション、リソース、条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_identityandaccessmanagement.html#identityandaccessmanagement-actions-as-permissions)」を参照してください。
+ `LimitGroupManagementAccessToSpecificUsers` ステートメントは、指定した名前を持つユーザーが書き込みおよびアクセス許可管理グループのアクションにアクセスすることを拒否します。ポリシーで指定されたユーザーがグループに変更しようとすると、このステートメントはリクエストを拒否しません。このリクエストは、`AllowAllUsersToViewAndManageThisGroup` ステートメントで許可されます。他のユーザーがこれらのオペレーションを実行しようとすると、リクエストは拒否されます。IAM コンソールでこのポリシーを作成している間、[**書き込み**] または [**アクセス許可管理**] アクセスレベルで定義されている IAM アクションを表示できます。これを行うには、[**JSON**] タブから [**Visual editor (ビジュアルエディタ)**] タブに切り替えます。アクセスレベルの詳細については、「[AWS Identity and Access Management のアクション、リソース、および条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_identityandaccessmanagement.html#identityandaccessmanagement-actions-as-permissions)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAllUsersToListAllGroups",
            "Effect": "Allow",
            "Action": "iam:ListGroups",
            "Resource": "*"
        },
        {
            "Sid": "AllowAllUsersToViewAndManageThisGroup",
            "Effect": "Allow",
            "Action": "iam:*Group*",
            "Resource": "arn:aws:iam::*:group/AllUsers"
        },
        {
            "Sid": "LimitGroupManagementAccessToSpecificUsers",
            "Effect": "Deny",
            "Action": [
                "iam:AddUserToGroup",
                "iam:CreateGroup",
                "iam:RemoveUserFromGroup",
                "iam:DeleteGroup",
                "iam:AttachGroupPolicy",
                "iam:UpdateGroup",
                "iam:DetachGroupPolicy",
                "iam:DeleteGroupPolicy",
                "iam:PutGroupPolicy"
            ],
            "Resource": "arn:aws:iam::*:group/AllUsers",
            "Condition": {
                "StringNotEquals": {
                    "aws:username": [
                        "srodriguez",
                        "mjackson",
                        "adesai"
                    ]
                }
            }
        }
    ]
}
```

------

# IAM: アカウントのパスワード要件の設定をプログラムによりコンソールで許可する
<a name="reference_policies_examples_iam_set-account-pass-policy"></a>

この例では、ユーザーがアカウントのパスワード要件を表示して更新することを許可する ID ベースのポリシーの作成方法を示します。パスワード要件は、アカウントメンバーのパスワードの複雑さの要件と必須のローテーション期間を指定します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。

アカウントのパスワードポリシー要件の設定方法については、「[IAM ユーザー用のアカウントパスワードポリシーを設定する](id_credentials_passwords_account-policy.md)」を参照してください。

------
#### [ JSON ]

****  

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

------

# IAM: ユーザーパスに基づいた Policy Simulator API へのアクセス
<a name="reference_policies_examples_iam_policy-sim-path"></a>

この例は、パス `Department/Development` を持つユーザーにのみ Policy Simulator API の使用を許可する ID ベースのポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iam:GetContextKeysForPrincipalPolicy",
                "iam:SimulatePrincipalPolicy"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:iam::*:user/Department/Development/*"
        }
    ]
}
```

------

**注記**  
パス `Department/Development` があるユーザーにのみ Policy Simulator コンソールの使用を許可するポリシーを作成するには、[IAM: ユーザーパスに基づく Policy Simulator のコンソールへのアクセス](reference_policies_examples_iam_policy-sim-path-console.md) を参照してください。

# IAM: ユーザーパスに基づく Policy Simulator のコンソールへのアクセス
<a name="reference_policies_examples_iam_policy-sim-path-console"></a>

この例では、パス `Department/Development` を持つユーザーにのみ Policy Simulator コンソールの使用を許可する ID ベースのポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

IAM ポリシーシミュレーターは [https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/) でアクセスできます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iam:GetPolicy",
                "iam:GetUserPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "iam:GetUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListGroupsForUser",
                "iam:ListUserPolicies",
                "iam:ListUsers"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:iam::*:user/Department/Development/*"
        }
    ]
}
```

------

# IAM: IAM ユーザーに MFA デバイスの自己管理を許可する
<a name="reference_policies_examples_iam_mfa-selfmanage"></a>

この例は、IAM ユーザーが[多要素認証 (MFA)](id_credentials_mfa.md) デバイスを自己管理することを許可する ID ベースのポリシーの作成方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。

**注記**  
このポリシーを設定した IAM ユーザーが MFA 認証されていない場合、このポリシーは、MFA を使用した認証に必要なアクションを除いて、すべての AWS アクションへのアクセスを拒否します。AWS にサインインしているユーザーにこれらのアクセス許可を追加する場合、これらの変更を確認するには、サインアウトしてからサインインする必要がある場合があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListUsers",
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToCreateVirtualMFADevice",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice"
            ],
            "Resource": "arn:aws:iam::*:mfa/*"
        },
        {
            "Sid": "AllowUserToManageTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:EnableMFADevice",
                "iam:GetMFADevice",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowUserToDeactivateTheirOwnMFAOnlyWhenUsingMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::*:user/${aws:username}"
            ],
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        },
        {
            "Sid": "BlockMostAccessUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:ListMFADevices",
                "iam:ListUsers",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

# IAM: IAM ユーザーが自分の認証情報をプログラムまたはコンソールで更新することを許可する
<a name="reference_policies_examples_iam_credentials_console"></a>

この例では、IAM ユーザーが自分のアクセスキー、署名入り証明書、サービス固有の認証情報、パスワードを更新することを許可するアイデンティティベースのポリシーを作成する方法を示します。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListUsers",
                "iam:GetAccountPasswordPolicy"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:*AccessKey*",
                "iam:ChangePassword",
                "iam:GetUser",
                "iam:*ServiceSpecificCredential*",
                "iam:*SigningCertificate*"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        }
    ]
}
```

------

コンソールでユーザーが自分のパスワードを変更できる方法についての詳細は、「[IAM ユーザーが自分のパスワードを変更する方法](id_credentials_passwords_user-change-own.md)」を参照してください。

# IAM: AWS Organizations ポリシーのサービスの最終アクセス時間情報を表示
<a name="reference_policies_examples_iam_service-accessed-data-orgs"></a>

この例では、特定の AWS Organizations ポリシーについて、サービスの最後にアクセスした情報の表示を許可する ID ベースのポリシーを作成する方法を示します。このポリシーでは、`p-policy123` ID を使用してサービスコントロールポリシー (SCP) のデータを取得できます。レポートを生成して表示する人物は、AWS Organizations 管理アカウントの認証情報を使用して認証される必要があります。このポリシーにより、リクエスタは組織内の任意の AWS Organizations エンティティのデータを取得できます。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

必要なアクセス許可、トラブルシューティング、およびサポートされているリージョンを含む、最終アクセス情報に関する重要な情報については、「[最終アクセス情報を使用して AWS のアクセス許可を調整する](access_policies_last-accessed.md)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOrgsReadOnlyAndIamGetReport",
            "Effect": "Allow",
            "Action": [
                "iam:GetOrganizationsAccessReport",
                "organizations:Describe*",
                "organizations:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowGenerateReportOnlyForThePolicy",
            "Effect": "Allow",
            "Action": "iam:GenerateOrganizationsAccessReport",
            "Resource": "*",
            "Condition": {
                "StringEquals": {"iam:OrganizationsPolicyId": "p-policy123"}
            }
        }
    ]
}
```

------

# IAM: ユーザー、グループ、またはロールに適用できる管理ポリシーを制限する
<a name="reference_policies_examples_iam_limit-managed"></a>

この例は、IAM ユーザー、グループ、またはロールに適用できるカスタマー管理ポリシーと AWS 管理ポリシーを制限する ID ベースのポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iam:AttachUserPolicy",
            "iam:DetachUserPolicy"
        ],
        "Resource": "*",
        "Condition": {
            "ArnEquals": {
                "iam:PolicyARN": [
                    "arn:aws:iam::*:policy/policy-name-1",
                    "arn:aws:iam::*:policy/policy-name-2"
                ]
            }
        }
    }
}
```

------

# AWS: AWS マネージド IAM ポリシー以外のアカウント外のリソースへのアクセスを拒否します
<a name="resource_examples_iam_policies_resource_account"></a>

ID ベースポリシーの `aws:ResourceAccount` を使用すると、ユーザーまたはロールでサービスが所有するアカウント内のリソースとのやり取りを要求するサービスを利用する機能に影響を与える可能性があります。

例外を用いてポリシーを作成して、AWS マネージド IAM ポリシーを許可することができます。AWS Organizations の外にあるサービス管理アカウントは、マネージド IAM ポリシーを所有しています。一覧表示して AWS マネージドポリシーを取得する IAM アクションは 4 つあります。ポリシー内のステートメント `AllowAccessToS3ResourcesInSpecificAccountsAndSpecificService1` の [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html) 要素でこれらのアクションを使用します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToResourcesInSpecificAccountsAndSpecificService1",
      "Effect": "Deny",
      "NotAction": [
        "iam:GetPolicy",
        "iam:GetPolicyVersion",
        "iam:ListEntitiesForPolicy",
        "iam:ListPolicies"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "111122223333"
          ]
        }
      }
    }
  ]
}
```

------

# AWS Lambda: Lambda 関数に Amazon DynamoDB テーブルへのアクセスを許可する
<a name="reference_policies_examples_lambda-access-dynamodb"></a>

この例では、特定の Amazon DynamoDB テーブルへの読み取りおよび書き込みアクセスを許可する ID ベースのポリシーを作成する方法を示します。このポリシーでは、CloudWatch Logs をログファイル に書き込むこともできます。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーを使用するには、Lambda [サービスロール](id_roles_create_for-service.md)にポリシーをアタッチします。サービスロールは、サービスがユーザーに代わってアクションを実行すできるようにするためにアカウントに作成するロールです。このサービスのロールには、信頼ポリシーのプリンシパルとして AWS Lambda を含める必要があります。このポリシーの使用方法の詳細については、AWS セキュリティブログの「[Amazon DynamoDB テーブルへの AWS Lambda のアクセスを許可する AWS IAM ポリシーを作成する方法](https://aws.amazon.com/blogs/security/how-to-create-an-aws-iam-policy-to-grant-aws-lambda-access-to-an-amazon-dynamodb-table/)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadWriteTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/SampleTable"
        },
        {
            "Sid": "GetStreamRecords",
            "Effect": "Allow",
            "Action": "dynamodb:GetRecords",
            "Resource": "arn:aws:dynamodb:*:*:table/SampleTable/stream/* "
        },
        {
            "Sid": "WriteLogStreamsAndGroups",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateLogGroup",
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "*"
        }
    ]
}
```

------

# Amazon RDS: 特定のリージョン内で RDS データベース全体へのアクセスを許可する
<a name="reference_policies_examples_rds_region"></a>

この例では、特定のリージョン内で RDS データベースへのフルアクセスを許可する ID ベースのポリシーを作成する方法を示します。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、「[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)」の手順に従います。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rds:*",
            "Resource": ["arn:aws:rds:us-east-1:*:*"]
        },
        {
            "Effect": "Allow",
            "Action": ["rds:Describe*"],
            "Resource": ["*"]
        }
    ]
}
```

------

# Amazon RDS: RDS データベースの復元をプログラムによりコンソールで許可する
<a name="reference_policies_examples_rds_db-console"></a>

この例は、RDS データベースの復元を許可する ID ベースのポリシーを作成する方法を示しています。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "rds:CreateDBParameterGroup",
                "rds:CreateDBSnapshot",
                "rds:DeleteDBSnapshot",
                "rds:Describe*",
                "rds:DownloadDBLogFilePortion",
                "rds:List*",
                "rds:ModifyDBInstance",
                "rds:ModifyDBParameterGroup",
                "rds:ModifyOptionGroup",
                "rds:RebootDBInstance",
                "rds:RestoreDBInstanceFromDBSnapshot",
                "rds:RestoreDBInstanceToPointInTime"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Amazon RDS: タグ所有者がタグ付けした RDS リソースへのフルアクセスを許可する
<a name="reference_policies_examples_rds_tag-owner"></a>

この例は、タグ付けした RDS リソースへのフルアクセスをタグの所有者に許可する ID ベースのポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "rds:Describe*",
                "rds:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "rds:DeleteDBInstance",
                "rds:RebootDBInstance",
                "rds:ModifyDBInstance"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:db-tag/Owner": "${aws:username}"}
            }
        },
        {
            "Action": [
                "rds:ModifyOptionGroup",
                "rds:DeleteOptionGroup"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:og-tag/Owner": "${aws:username}"}
            }
        },
        {
            "Action": [
                "rds:ModifyDBParameterGroup",
                "rds:ResetDBParameterGroup"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:pg-tag/Owner": "${aws:username}"}
            }
        },
        {
            "Action": [
                "rds:AuthorizeDBSecurityGroupIngress",
                "rds:RevokeDBSecurityGroupIngress",
                "rds:DeleteDBSecurityGroup"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:secgrp-tag/Owner": "${aws:username}"}
            }
        },
        {
            "Action": [
                "rds:DeleteDBSnapshot",
                "rds:RestoreDBInstanceFromDBSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:snapshot-tag/Owner": "${aws:username}"}
            }
        },
        {
            "Action": [
                "rds:ModifyDBSubnetGroup",
                "rds:DeleteDBSubnetGroup"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:subgrp-tag/Owner": "${aws:username}"}
            }
        },
        {
            "Action": [
                "rds:ModifyEventSubscription",
                "rds:AddSourceIdentifierToSubscription",
                "rds:RemoveSourceIdentifierFromSubscription",
                "rds:DeleteEventSubscription"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {"rds:es-tag/Owner": "${aws:username}"}
            }
        }
    ]
}
```

------

# Amazon S3: Amazon Cognito ユーザーにバケット内のオブジェクトへのアクセスを許可する
<a name="reference_policies_examples_s3_cognito-bucket"></a>

この例では、Amazon Cognito ユーザーが特定の Amazon S3 バケットのオブジェクトにアクセスを許可する ID ベースのポリシーを作成する方法が示されます。このポリシーは、`cognito`、アプリケーションの名前、フェデレーティッドプリンシパル ID が含まれる名前を持つオブジェクトのみにアクセスを許可し、\$1\$1cognito-identity.amazonaws.com:sub\$1 変数で表されます。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

**注記**  
オブジェクトキーで使用される「サブ」値は、ユーザープール内のユーザーのサブ値ではなく、ID プール内のユーザーに関連付けられた ID です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ListYourObjects",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": [
        "arn:aws:s3:::bucket-name"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "cognito/application-name/${cognito-identity.amazonaws.com:sub}/*"
          ]
        }
      }
    },
    {
      "Sid": "ReadWriteDeleteYourObjects",
      "Effect": "Allow",
      "Action": [
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucket-name/cognito/application-name/${cognito-identity.amazonaws.com:sub}/*"
      ]
    }
  ]
}
```

------

Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。ユーザーは、ユーザー名とパスワードを使用して直接サインインするか、Facebook、Amazon、Google などのサードパーティーを通じてサインインできます。

Amazon Cognito の主な 2 つのコンポーネントは、ユーザープールと ID プールです。ユーザープールは、アプリユーザーのサインアップとサインインオプションを提供するユーザーディレクトリです。ID プールは、AWS の他のサービスに対するアクセスをユーザーに許可します。ID プールとユーザープールは別々に使用することも、一緒に使用することもできます。

Amazon Cognito の詳細については、「[Amazon Cognito ユーザーガイド](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)」を参照してください。

# Amazon S3: フェデレーションユーザーが Amazon S3 にある自分のホームディレクトリにプログラムを使用してコンソール内でアクセスできるようにします
<a name="reference_policies_examples_s3_federated-home-directory-console"></a>

この例では、フェデレーティッドプリンシパルが S3 にある独自のホームディレクトリバケットオブジェクトにアクセスを許可する ID ベースのポリシーを作成する方法が示されます。ホームディレクトリは、`home` フォルダや個々のフェデレーティッドプリンシパルのフォルダを含むバケットです。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーの `${aws:userid}` 変数は、`role-id:specified-name` に解決されます。フェデレーティッドプリンシパル ID の `role-id` の部分は、作成時にフェデレーティッドプリンシパルに割り当てられる一意の識別子です。詳細については、「[一意の識別子](reference_identifiers.md#identifiers-unique-ids)」を参照してください。`specified-name` は、フェデレーティッドプリンシパルがロールを引き受けるときに `AssumeRoleWithWebIdentity` リクエストに渡される [RoleSessionName パラメータ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html#API_AssumeRoleWithWebIdentity_RequestParameters)です。

ロール ID を表示するには、AWS CLI コマンド `aws iam get-role --role-name specified-name` を使用します。たとえば、フレンドリ名を `John` と指定すると、CLI はロール ID として `AROAXXT2NJT7D3SIQN7Z6` を返します。この場合、フェデレーティッドプリンシパルのユーザー ID は `AROAXXT2NJT7D3SIQN7Z6:John` です。このポリシーでは、フェデレーティッドプリンシパルの John が `AROAXXT2NJT7D3SIQN7Z6:John` のプレフィックスを使用して Amazon S3 バケットにアクセスを許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "",
                        "home/",
                        "home/${aws:userid}/*"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:userid}",
                "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:userid}/*"
            ]
        }
    ]
}
```

------

# Amazon S3: S3 バケットアクセス、しかし最新の MFA がなく、本番バケットが拒否された
<a name="reference_policies_examples_s3_full-access-except-production"></a>

この例では、オブジェクトの更新、追加、削除など、Amazon S3 管理者が任意のバケットへのアクセスを許可する ID ベースのポリシーを作成する方法を示します。ただし、過去 30 分以内にユーザーが [多要素認証 (MFA)](id_credentials_mfa.md) を使用してサインインしていない場合、`amzn-s3-demo-bucket-production` バケットへのアクセスは明示的に拒否されます。このポリシーは、コンソールで、AWS CLI または AWS APIを使用してプログラムでこのアクションを実行するために必要なアクセス許可を付与します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーでは、長期的なユーザーアクセスキーを使用して `amzn-s3-demo-bucket` バケットへのプログラムによるアクセスを許可することはありません。これは、`aws:MultiFactorAuthAge` 条件キーと `NumericGreaterThanIfExists` 条件演算子を使用して行います。このポリシー条件は、MFA が存在しない場合、または MFA の経過時間が 30 分を超える場合に `true` を返します。このような場合、アクセスが拒否されます。`amzn-s3-demo-bucket-production` バケットにプログラムでアクセスするには、S3 管理者は [GetSessionToken](id_credentials_temp_request.md#api_getsessiontoken) API オペレーションを使用して直近 30 分以内に生成された一時的な認証情報を使用する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListAllS3Buckets",
            "Effect": "Allow",
            "Action": ["s3:ListAllMyBuckets"],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowBucketLevelActions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowBucketObjectActions",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::*/*"
        },
        {
            "Sid": "RequireMFAForProductionBucket",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-production/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-production"
            ],
            "Condition": {
                "NumericGreaterThanIfExists": {"aws:MultiFactorAuthAge": "1800"}
            }
        }
    ]
}
```

------

# Amazon S3: IAM ユーザーが自分の S3 ホームディレクトリにプログラムによりコンソールでアクセスすることを許可する
<a name="reference_policies_examples_s3_home-directory-console"></a>

この例では、IAM ユーザーが S3 の自分のホームディレクトリバケットオブジェクトへのアクセスを許可する ID ベースのポリシーの、作成方法を示します。ホームディレクトリは、`home` フォルダや個々のユーザーのフォルダを含むバケットです。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーは、IAM ロールを使用するときに `aws:username` 変数を使用できないため、IAM ロールを使用するときには機能しません。プリンシパルキーバリューの詳細については、「[プリンシパルキーの値](reference_policies_variables.md#principaltable)」をご参照ください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "",
                        "home/",
                        "home/${aws:username}/*"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
                "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
            ]
        }
    ]
}
```

------

# Amazon S3: 特定の S3 バケットに対する管理の制限
<a name="reference_policies_examples_s3_deny-except-bucket"></a>

この例では、Amazon S3 バケットの管理を特定のバケットに制限する ID ベースのポリシーを作成する方法を示します。このポリシーは、すべての Amazon S3 アクションを実行するアクセス権限を付与しますが、Amazon S3 以外のすべての AWS のサービス へのアクセスを拒否します。次の例を参照してください。このポリシーによると、S3 バケットまたは S3 オブジェクトリソースで実行できる Amazon S3 アクションにのみアクセスできます。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

このポリシーが、このポリシーによって拒否されたアクションを許可する他のポリシー ([AmazonS3FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonS3FullAccess) または [AmazonEC2FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonEC2FullAccess) AWS 管理ポリシーなど) と組み合わされて使用される場合、アクセスは拒否されます。これは、明示的な拒否のステートメントは許可のステートメントより優先されるからです。詳細については、「[AWS エンフォースメントコードロジックがリクエストを評価してアクセスを許可または拒否する方法](reference_policies_evaluation-logic_policy-eval-denyallow.md)」を参照してください。

**警告**  
[`NotAction`](reference_policies_elements_notaction.md) および [`NotResource`](reference_policies_elements_notresource.md) は、注意して使用する必要がある高度なポリシー要素です。このポリシーは、Amazon S3 を除くすべての AWS サービスへのアクセスを拒否します。このポリシーをユーザーにアタッチすると、他のサービスにアクセス許可を付与する他のポリシーは無視され、アクセスは拒否されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        },
        {
            "Effect": "Deny",
            "NotAction": "s3:*",
            "NotResource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}
```

------

# Amazon S3 バケットオブジェクトへの読み書きアクセスを付与する
<a name="reference_policies_examples_s3_rw-bucket"></a>

この例は、特定の Amazon S3 バケット内のオブジェクトへの `Read` および `Write` アクセスを許可する ID ベースのポリシーを作成する方法を示しています。このポリシーでは、AWS API または AWS CLI から、このアクションをプログラムで完了するために必要なアクセス権を許可します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

`s3:*Object` アクションは、アクション名の一部にワイルドカードを使用します。この `AllObjectActions` ステートメントでは、`GetObject`、`DeleteObject`、`PutObject`、および「Object」という単語で終わるその他の Amazon S3 アクションを使用できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::bucket-name"]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": ["arn:aws:s3:::bucket-name/*"]
        }
    ]
}
```

------

**注記**  
Amazon S3 バケットのオブジェクトへの `Read` と `Write` アクセスを許可し、コンソールアクセスのための追加のアクセス許可も含めるには、「[Amazon S3: S3 バケットのオブジェクトへの読み取りおよび書き込みアクセスをプログラムによりコンソールで許可する](reference_policies_examples_s3_rw-bucket-console.md)」を参照してください。

# Amazon S3: S3 バケットのオブジェクトへの読み取りおよび書き込みアクセスをプログラムによりコンソールで許可する
<a name="reference_policies_examples_s3_rw-bucket-console"></a>

この例は、特定の S3 バケット内のオブジェクトへの `Read` および `Write` アクセスを許可する ID ベースのポリシーを作成する方法を示しています。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーの*イタリック体のプレースホルダーテキスト*を独自の情報に置き換えます。次に、[ポリシーの作成](access_policies_create.md)または[ポリシーの編集](access_policies_manage-edit.md)の手順に従います。

`s3:*Object` アクションは、アクション名の一部にワイルドカードを使用します。この `AllObjectActions` ステートメントでは、`GetObject`、`DeleteObject`、`PutObject`、および「Object」という単語で終わるその他の Amazon S3 アクションを使用できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"]
        }
    ]
}
```

------