

# IAM を使用したリージョンエンドポイント API オペレーションの承認
<a name="s3-express-security-iam"></a>

AWS Identity and Access Management (IAM) は、管理者が AWS リソースへのアクセスを安全に管理するうえで役立つ AWS のサービス です。IAM 管理者は、どのユーザーを認証して (サインイン)、ディレクトリバケットと S3 Express One Zone オペレーションにおいて、Amazon S3 リソースを使用する認可を受ける (アクセス許可がある) ことができるかを制御します。IAMは追加料金なしでご利用いただけます。

デフォルトでは、ユーザーにはディレクトリバケットへのアクセス許可はありません。ディレクトリバケットへのアクセス権限を付与するには、IAM を使用してユーザー、グループ、またはロールを作成し、それらのアイデンティティにアクセス許可をアタッチします。IAM の詳細については、「**IAM ユーザーガイド」の「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

アクセスを提供するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
+ **AWS IAM アイデンティティセンター 内のユーザーとグループ** — アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html)」の手順に従ってください。
+ **アイデンティティプロバイダーを介して IAM で管理されているユーザー** — ID フェデレーションのロールを作成します。詳細については、*IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) を参照してください。
+ **IAM ロールとユーザー** — ユーザーが引き受けることができるロールを作成します。詳細については、「**IAM ユーザーガイド」の「[ IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」を参照してください。

S3 Express One Zone 向けの IAM の詳細については、次のトピックを参照してください。

**Topics**
+ [

## プリンシパル
](#s3-express-security-iam-principals)
+ [

## リソース
](#s3-express-security-iam-resources)
+ [

## ディレクトリバケットのアクション
](#s3-express-security-iam-actions)
+ [

# ディレクトリバケットの IAM アイデンティティベースのポリシー
](s3-express-security-iam-identity-policies.md)
+ [

# ディレクトリバケットのバケットポリシーの例
](s3-express-security-iam-example-bucket-policies.md)

## プリンシパル
<a name="s3-express-security-iam-principals"></a>

バケットへのアクセスを許可するリソースベースのポリシーを作成する場合は、`Principal` 要素を使用して、そのリソースに対するアクションまたはオペレーションをリクエストできるユーザーまたはアプリケーションを指定する必要があります。ディレクトリバケットポリシーでは、次のプリンシパルを使用できます。
+ AWS アカウント。
+ IAM ユーザー
+ IAM ロール
+ フェデレーションユーザー

詳細については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)」の「*Principal*」を参照してください。

## リソース
<a name="s3-express-security-iam-resources"></a>

ディレクトリバケットの Amazon リソースネーム (ARN) には、`s3express` 名前空間、AWS リージョン、AWS アカウント ID、AWS ゾーン ID (アベイラビリティーゾーンまたはローカルゾーン ID) を含むディレクトリバケット名が含まれます。

ディレクトリバケットにアクセスしてアクションを実行するには、次の ARN 形式を使用する必要があります。

```
arn:aws:s3express:region:account-id:bucket/base-bucket-name--zone-id--x-s3
```

ディレクトリバケットのアクセスポイントにアクセスしてアクションを実行するには、次の ARN 形式を使用する必要があります。

```
arn:aws::s3express:region:account-id:accesspoint/accesspoint-basename--zone-id--xa-s3
```

ARN の詳細については、「**IAM ユーザーガイド」の「[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)」を参照してください。リソースの詳細については、「**IAM ユーザーガイド」の「[IAM JSON ポリシー要素: Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)」を参照してください。

## ディレクトリバケットのアクション
<a name="s3-express-security-iam-actions"></a>

IAM ポリシーまたはリソースベースのポリシーで、どの S3 on Outposts アクションを許可または拒否するかを定義します。アクションは特定の API オペレーションに対応しています。ディレクトリバケットでは、S3 Express One Zone 名前空間を使用して `s3express` と呼ばれるアクセス許可を付与する必要があります。

`s3express:CreateSession` アクセス許可を付与すると、`CreateSession` API オペレーションはゾーンエンドポイント API (オブジェクトレベル) オペレーション用の一時セッショントークンを取得します。このセッショントークンは、その他すべてのゾーンエンドポイント API オペレーションで使用される認証情報を返します。この結果、IAM ポリシーを使用してゾーンの API オペレーションへのアクセス許可を付与することはありません。代わりに、`CreateSession` はすべてのオブジェクトレベルのオペレーションへのアクセスを有効にします。ゾーン API オペレーションとアクセス許可のリストについては、「[リクエストの認証と承認](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html)」を参照してください。

`CreateSession` API オペレーションの詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)」を参照してください。.

IAM ポリシーステートメントの `Action` エレメントでは、以下のアクションを指定できます。ポリシーを使用して、AWS でオペレーションを実行するアクセス許可を付与します。ポリシーでアクションを使用する場合は、通常、同じ名前の API オペレーションまたは CLI コマンドへのアクセスを許可または拒否します。ただし、単独のアクションが複数のオペレーションへのアクセスを制御する場合もあります。バケットレベルのアクションへのアクセスは IAM アイデンティティベースのポリシー (ユーザーまたはロール) でのみ付与でき、バケットポリシーでは付与できません。

アクセスポイントポリシーの設定方法の詳細については、「[ディレクトリバケットのアクセスポイントを使用するための IAM ポリシーの設定](access-points-directory-buckets-policies.md)」を参照してください。

詳細については、「[Amazon S3 Express のアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3express.html)」を参照してください。

# ディレクトリバケットの IAM アイデンティティベースのポリシー
<a name="s3-express-security-iam-identity-policies"></a>

ディレクトリバケットを作成する前に、AWS Identity and Access Management (IAM) ロールまたはユーザーに必要なアクセス許可を付与する必要があります。このポリシー例では、`CreateSession` API オペレーション (ゾーンエンドポイント [オブジェクトレベル] API オペレーションで使用) とすべてのリージョンエンドポイント (バケットレベル) API オペレーションへのアクセスを許可します。このポリシーでは、すべてのディレクトリバケットでの `CreateSession` API オペレーションの使用が許可されます。ただし、リージョンエンドポイント API オペレーションは、指定されたディレクトリバケットでの使用のみが許可されます。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

# ディレクトリバケットのバケットポリシーの例
<a name="s3-express-security-iam-example-bucket-policies"></a>

このセクションでは、ディレクトリバケットポリシーの例を示します。これらのポリシーを使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

次のバケットポリシーの例では、AWS アカウント ID `111122223333` が、指定されたディレクトリバケットに対して `CreateSession` API オペレーションを使用することを許可します。セッションモードが指定されていない場合、セッションは最大許容特権で作成されます (最初に `ReadWrite` を試行し、許可されていない場合は `ReadOnly` を試行します)。このポリシーは、ゾーンエンドポイント (オブジェクトレベル) の API オペレーションへのアクセスを許可します。

**Example – `CreateSession` 呼び出しを許可するバケットポリシー**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadWriteAccess",
            "Effect": "Allow",
            "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root"
                ]
            },
            "Action": [
                "s3express:CreateSession"
            ]
        }
    ]
}
```

**Example – `ReadOnly` セッションでの `CreateSession` 呼び出しを許可するバケットポリシー**  
次のバケットポリシー例では、AWS アカウント ID `111122223333` が `CreateSession` API オペレーションを使用することを許可しています。このポリシーは、`s3express:SessionMode` 条件キーと `ReadOnly` 値を使用して読み取り専用セッションを設定します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": "s3express:CreateSession",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3express:SessionMode": "ReadOnly"
                }
            }
        }
    ]
}
```

**Example — `CreateSession` 呼び出しのためにクロスアカウントアクセスを許可するバケットポリシー**  
次のバケットポリシーの例では、AWS アカウント ID `111122223333` が、AWS アカウント ID *`444455556666`* が所有する指定されたディレクトリ バケットに対して `CreateSession` API オペレーションを使用することを許可します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccount",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3express:CreateSession"
            ],
            "Resource": "arn:aws:s3express:us-west-2:444455556666:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}
```