

# IAM 정책을 사용하여 액세스 제어
<a name="id_roles_providers_outbound_policies"></a>

IAM은 아웃바운드 ID 페더레이션 기능에 대한 액세스를 제어하는 여러 정책 유형을 제공합니다. [ID 기반 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)을 사용하여 토큰을 요청할 수 있는 IAM 위탁자를 제어하고 대상, 수명 및 서명 알고리즘과 같은 특정 토큰 속성을 적용할 수 있습니다. [서비스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)(SCP)을 사용하면 AWS Organizations의 모든 계정에서 토큰 생성에 대해 조직 전체의 제한을 적용할 수 있습니다. [리소스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)(RCP) 리소스 수준에서 액세스를 제어합니다. 또한 [VPC 엔드포인트 정책](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)을 사용하여 VPC 엔드포인트를 통해 AWS STS `GetWebIdentityToken` API에 액세스할 수 있는 위탁자를 제한하여 보안 태세에 네트워크 수준 제어를 추가할 수 있습니다. 이 섹션에서는 이러한 정책 유형 및 조건 키를 사용하여 세분화된 액세스 제어를 구현하는 방법을 설명합니다.

ID 토큰을 요청하려면 IAM 위탁자에게 `sts:GetWebIdentityToken` 권한이 있어야 합니다. IAM 사용자 또는 역할에 연결된 ID 정책을 통해 이 권한을 부여합니다. 태그(키, 값 페어)가 GetWebIdentityToken 직접 호출에 전달되도록 허용하려면 IAM 위탁자에게 `sts:TagGetWebIdentityToken` 권한이 있어야 합니다.
+ [sts:IdentityTokenAudience](reference_policies_iam-condition-keys.md#ck_identitytokenaudience) 조건 키를 사용하여 토큰을 받을 수 있는 외부 서비스를 제한합니다.
+ [sts:DurationSeconds](reference_policies_iam-condition-keys.md#ck_durationseconds) 조건 키를 사용하여 최대 토큰 수명을 적용합니다.
+ [sts:SigningAlgorithm](reference_policies_iam-condition-keys.md#ck_signingalgorithm) 조건 키를 사용하여 특정 암호화 알고리즘을 요구합니다.
+ [aws:RequestTag](reference_policies_condition-keys.md#condition-keys-requesttag) 조건 키를 사용하여 요청에서 전달된 태그 키 값 페어를 정책에서 지정한 태그 페어와 비교합니다.
+ [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 조건 키를 사용하여 요청의 태그 키를 정책에서 지정한 키와 비교합니다.

IAM 정책에서 사용할 수 있는 조건 키에 대한 자세한 내용은 [IAM 및 AWS STS](reference_policies_iam-condition-keys.md) 조건 키를 참조하세요.

이 샘플 ID 정책은 여러 조건 키를 결합합니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTokenGenerationWithRestrictions",
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api1.example.com",
                        "https://api2.example.com"
                    ]
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                },
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

## 모범 사례
<a name="outbound-best-practices"></a>

다음 권장 사항에 따라 AWS ID를 외부 서비스에 안전하게 페더레이션합니다.
+ **짧은 토큰 수명 사용:** 운영 요구 사항을 충족하는 수명이 가장 짧은 토큰을 요청합니다.
+ **IAM 정책을 사용하여 최소 권한 액세스 구현 및 토큰 속성 제한:** 권한이 필요한 IAM 위탁자에게만 `sts:GetWebIdentityToken` 권한을 부여합니다. 조건 키를 사용하여 필요에 따라 서명 알고리즘, 허용된 토큰 대상 및 최대 토큰 수명을 지정합니다.
+ **외부 서비스의 클레임 검증:** 보안을 위해 항상 제목('sub'), 대상('aud') 등의 관련 클레임을 검증하여 예상 값과 일치하는지 확인합니다. 가능한 경우 사용자 지정 클레임을 검증하여 외부 서비스에서 세분화된 권한 부여 결정을 가능하게 합니다.