

# 転送アクセスセッション (FAS) リクエストとアクセス許可の評価
<a name="fas-requests-and-permission-evaluation"></a>

CloudFormation スタックを作成、更新、削除する場合、ユーザーはオプションで IAM ロール ARN を指定できます。ロールが指定されていない場合、CloudFormation はデフォルトのサービスメカニズムを使用して他の AWS サービスとやり取りします。このシナリオでは、呼び出し元は管理対象のリソースに必要なアクセス許可を持っている必要があります。または、ユーザーが独自の IAM ロールを提供すると、CloudFormation はそのロールを引き受けて、ユーザーに代わってサービスのやり取りを実行します。

ユーザーが IAM ロールを提供するかどうかにかかわらず、CloudFormation はリソースオペレーションごとに新しいスコープが限定された FAS トークンを生成します。その結果、`aws:ViaAWSService` を含む [FAS 関連の条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html#access_fas_policy_conditions)は、両方のシナリオで入力されます。

FAS の使用は、CloudFormation オペレーション中の IAM ポリシーの評価方法に影響します。FAS 関連の条件キーの影響を受けるリソースを含むテンプレートを使用してスタックを作成すると、アクセス許可が拒否される場合があります。

**IAM ポリシーの例**  
次の IAM ポリシーを検討してください。`Statement2` は CloudFormation での `AWS::KMS::Key`リソースの作成を一貫して禁止します。スタックオペレーション中に IAM ロールが指定されているかどうかにかかわらず、制限は一貫して適用されます。これは、FAS の使用により、`aws:ViaAWSService` 条件キーが常に `true` に設定されているためです。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "kms:CreateKey"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Statement2",
            "Effect": "Deny",
            "Action": [
                "kms:CreateKey"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "Bool": {
                    "aws:ViaAWSService": "true"
                }
            }
        }
    ]
}
```

------

**スタックテンプレートの例**  
例えば、ユーザーが次のサンプルテンプレートを使用してスタックを作成すると、 `aws:ViaAWSService` は `true` に設定され、ロールのアクセス許可は FAS ポリシーによって上書きされます。スタックの作成は、`CreateKey` アクションを拒否する IAM ポリシーの `Statement2` の影響を受けます。その結果、アクセス許可拒否エラーが発生します。

```
Resources:
  myPrimaryKey:
    Type: AWS::KMS::Key
    Properties:
      Description: An example multi-Region primary key
      KeyPolicy:
        Version: '2012-10-17'
        Id: key-default-1
        Statement:
          - Sid: Enable IAM User Permissions
            Effect: Allow
            Principal:
              AWS: !Join
                - ''
                - - 'arn:aws:iam::'
                  - !Ref AWS::AccountId
                  - ':root'
            Action: kms:*
            Resource: '*'
```

FAS の詳細については、「*IAM ユーザーガイド*」の「[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)」を参照してください。

**注記**  
ほとんどのリソースはこの動作に従います。ただし、リソースの作成、更新、削除時に予期しない成功または失敗が発生し、IAM ポリシーに FAS 関連の条件キーが含まれている場合、問題のリソースは、この標準的な動作に従わないリソースの小さなサブセットに属している可能性があります。