

# Amazon EC2의 IAM 역할
<a name="iam-roles-for-amazon-ec2"></a>

애플리케이션은 AWS 자격 증명으로 API 요청에 서명해야 합니다. 따라서 애플리케이션 개발자는 EC2 인스턴스에서 실행되는 인스턴스의 자격 증명을 관리할 전략을 수립해야 합니다. 예를 들어 AWS 자격 증명을 인스턴스에 안전하게 배포하여 다른 사용자로부터 보호하는 한편 해당 인스턴스의 애플리케이션이 자격 증명을 사용하여 요청에 서명하도록 할 수 있습니다. 그러나 각 인스턴스에 자격 증명을 안전하게 배포하기란 쉽지 않으며, 스팟 인스턴스와 같이 AWS에서 자동으로 생성하는 인스턴스 또는 Auto Scaling 그룹의 인스턴스에 대해서는 특히 어렵습니다. 또한 AWS 자격 증명을 교체할 때 각 인스턴스의 자격 증명을 업데이트할 수 있어야 합니다.

애플리케이션이 사용하는 보안 자격 증명을 직접 관리할 필요 없이 인스턴스의 애플리케이션에서 안전하게 API 요청을 전송할 수 있도록 IAM 역할을 설계했습니다. AWS 자격 증명을 생성하고 배포하는 대신 다음과 같이 IAM 역할을 사용하여 API 요청 전송 권한을 위임할 수 있습니다.

1. IAM 역할 생성.

1. 역할을 수행할 수 있는 계정 또는 AWS 서비스를 정의합니다.

1. 역할을 수행하면서 애플리케이션이 사용할 수 있는 API 작업 및 리소스를 정의합니다.

1. 인스턴스를 시작할 때 역할을 지정하거나, 기존 인스턴스에 역할을 연결합니다.

1. 애플리케이션에서 임시 자격 증명 세트를 검색하여 사용하도록 합니다.

예를 들어 IAM 역할을 사용하여 인스턴스에서 실행되며 Amazon S3의 버킷을 사용해야 하는 애플리케이션에 해당 권한을 부여할 수 있습니다. JSON 형식으로 정책을 생성하여 IAM 역할에 권한을 지정할 수 있습니다. 이 방법은 사용자를 대상으로 정책을 생성할 때와 비슷합니다. 역할을 변경하면 모든 인스턴스에 변경 내용이 전파됩니다.

**참고**  
Amazon EC2 IAM 역할 보안 인증에는 역할에 구성된 최대 세션 기간이 적용되지 않습니다. 자세한 내용은 *IAM 사용 설명서*의 [역할 수임 방법](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)을 참조하세요.

IAM 역할을 생성할 때, 애플리케이션에 필요한 특정 API 호출에 대한 액세스를 제한하는 최소 권한 IAM 정책을 연결합니다. Windows 간 통신의 경우 잘 정의되고 잘 문서화된 Windows 그룹 및 역할을 사용하여 Windows 인스턴스 간에 애플리케이션 수준의 액세스 권한을 부여합니다. 고객은 그룹 및 역할을 통해 최소 권한 애플리케이션 및 NTFS 폴더 수준 권한을 정의하여 애플리케이션별 요구 사항에 맞게 액세스를 제한할 수 있습니다.

인스턴스에 하나의 IAM 역할만 연결할 수 있지만, 여러 인스턴스에 동일한 역할을 연결할 수는 있습니다. IAM 역할 생성 및 사용에 대한 자세한 내용은 *IAM 사용 설명서*에서 [역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하십시오.

IAM 정책에 리소스 수준 권한을 적용하여 사용자가 인스턴스에 IAM 역할을 연결, 교체 또는 분리할 수 있는 권한을 제어할 수 있습니다. 자세한 내용은 [Amazon EC2 API 작업에 지원되는 리소스 수준 권한](iam-policies-for-amazon-ec2.md#ec2-supported-iam-actions-resources) 및 다음 예제: [예: IAM 역할 작업](ExamplePolicies_EC2.md#iam-example-iam-roles) 섹션을 참조하세요.

**Topics**
+ [인스턴스 프로파일](#ec2-instance-profile)
+ [사용 사례에 대한 권한](#generate-policy-for-iam-role)
+ [보안 자격 증명 검색](instance-metadata-security-credentials.md)
+ [인스턴스에 역할을 연결할 수 있는 권한](permission-to-pass-iam-roles.md)
+ [인스턴스에 역할 연결](attach-iam-role.md)
+ [인스턴스 ID 역할](#ec2-instance-identity-roles)

## 인스턴스 프로파일
<a name="ec2-instance-profile"></a>

Amazon EC2에서는 *인스턴스 프로파일*을 IAM 역할의 컨테이너로 사용합니다. IAM 콘솔을 사용하여 IAM 역할을 생성하면 인스턴스 프로파일이 자동으로 생성되고 해당 역할과 동일한 이름이 지정됩니다. Amazon EC2 콘솔을 사용하여 IAM 역할로 인스턴스를 시작하거나 인스턴스에 IAM 역할을 연결하는 경우 인스턴스 프로파일 이름 목록을 기반으로 역할을 선택합니다.

AWS CLI, API 또는 AWS SDK를 사용하여 역할을 생성하면 역할과 인스턴스 프로파일이 별개의 작업으로 생성되며 이름은 각각 다를 수 있습니다. AWS CLI, API 또는 AWS SDK를 사용하여 IAM 역할로 인스턴스를 시작하거나 인스턴스에 IAM 역할을 연결하는 경우 인스턴스 프로파일 이름을 지정합니다.

인스턴스 프로파일은 하나의 IAM 역할만 포함할 수 있습니다. 여러 인스턴스 프로파일에 IAM 역할을 포함할 수 있습니다.

인스턴스에 대한 권한을 업데이트하려면 해당 인스턴스 프로파일을 교체합니다. 이 변경 사항이 적용되기까지 최대 1시간이 지연되므로 인스턴스 프로파일에서 역할을 제거하는 것은 권장되지 않습니다.

자세한 내용은 *IAM 사용 설명서*의 [인스턴스 프로파일 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)을 참조하세요.

## 사용 사례에 대한 권한
<a name="generate-policy-for-iam-role"></a>

애플리케이션에 대한 IAM 역할을 처음 생성하는 경우 간혹 필요 이상의 권한을 부여하게 될 수 있습니다. 프로덕션 환경에서 애플리케이션을 시작하기 전에 IAM 역할에 대한 액세스 활동을 기반으로 IAM 정책을 생성할 수 있습니다. IAM Access Analyzer는 사용자의 AWS CloudTrail 로그를 검토하고 지정된 날짜 범위에 역할에 의해 사용된 권한이 포함된 정책 템플릿을 생성합니다. 템플릿을 사용하여 세분화된 권한을 가진 관리형 정책을 생성한 다음 IAM 역할에 연결할 수 있습니다. 이렇게 하면 특정 사용 사례에 따라 역할이 AWS 리소스와 상호 작용하는 데 필요한 권한만 부여할 수 있습니다. 이는 [최소 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 모범 사례를 준수하는 데 도움이 됩니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM Access Analyzer 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)을 참조하세요.

# 인스턴스 메타데이터에서 보안 자격 증명 검색
<a name="instance-metadata-security-credentials"></a>

인스턴스의 애플리케이션은 인스턴스 메타데이터 항목 `iam/security-credentials/`*role-name*에서 역할이 제공하는 보안 자격 증명을 검색합니다. 역할에 연결된 보안 자격 증명을 통해 역할에 정의한 작업 및 리소스에 대한 권한이 애플리케이션에 부여됩니다. 이러한 보안 자격 증명은 임시로 발급되며 자동으로 교체됩니다. 이전 자격 증명이 만료되기 최소 5분 전에 새 자격 증명이 제공됩니다.

인스턴스 메타데이터에 대한 자세한 내용은 [인스턴스 메타데이터를 사용하여 EC2 인스턴스를 관리합니다.](ec2-instance-metadata.md) 섹션을 참조하세요.

**주의**  
IAM 역할과 함께 인스턴스 메타데이터를 사용하는 서비스를 사용하는 경우 서비스에서 사용자 대신 HTTP 호출을 수행할 때 자격 증명이 노출되지 않도록 주의하세요. 자격 증명이 노출될 수 있는 서비스 유형은 HTTP 프록시, HTML/CSS 검증 서비스, XML 포함을 지원하는 XML 프로세서 등입니다.

Amazon EC2 워크로드의 경우 아래 설명된 방법을 사용하여 세션 자격 증명을 검색하는 것이 좋습니다. 이러한 자격 증명을 사용하면 `sts:AssumeRole`을 사용하여 인스턴스와 이미 연결된 동일한 역할을 맡을 필요 없이 워크로드에서 AWS API 요청을 수행할 수 있습니다. 속성 기반 액세스 제어(ABAC)에 대한 세션 태그를 전달하거나 역할의 권한을 추가로 제한하기 위해 세션 정책을 전달해야 하는 경우가 아니면 이러한 역할 수임 호출은 동일한 임시 역할 세션 자격 증명의 새 세트를 생성하므로 불필요합니다.

워크로드가 역할을 사용하여 자체적으로 수임하는 경우 해당 역할이 자체적으로 수임하도록 명시적으로 허용하는 신뢰 정책을 생성해야 합니다. 신뢰 정책을 생성하지 않으면 `AccessDenied` 오류가 발생합니다. 자세한 내용은 *IAM 사용 설명서*의 [역할 신뢰 정책 업데이트](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html)를 참조하세요.

------
#### [ IMDSv2 ]

**Linux**  
Linux 인스턴스에서 다음 명령을 실행하여 IAM 역할에 대한 보안 자격 증명을 검색합니다.

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
Windows 인스턴스에서 다음 cmdlet을 실행하여 IAM 역할에 대한 보안 자격 증명을 검색합니다.

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------
#### [ IMDSv1 ]

**Linux**  
Linux 인스턴스에서 다음 명령을 실행하여 IAM 역할에 대한 보안 자격 증명을 검색합니다.

```
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
Windows 인스턴스에서 다음 cmdlet을 실행하여 IAM 역할에 대한 보안 자격 증명을 검색합니다.

```
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------

다음은 예제 출력입니다. 보안 자격 증명을 검색할 수 없는 경우 *IAM 사용 설명서*의 [제 EC2 인스턴스의 임시 보안 자격 증명에 액세스할 수 없습니다.](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-ec2.html#troubleshoot_iam-ec2_no-keys)를 참조하세요.

```
{
  "Code" : "Success",
  "LastUpdated" : "2012-04-26T16:39:16Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
  "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  "Token" : "token",
  "Expiration" : "2017-05-17T15:09:54Z"
}
```

인스턴스에서 실행되는 애플리케이션, AWS CLI 및 Tools for Windows PowerShell 명령의 경우, 임시 보안 자격 증명을 명시적으로 받지 않아도 됩니다. AWS SDK, AWS CLI 및 Tools for Windows PowerShell이 EC2 인스턴스 메타데이터 서비스에서 자동으로 자격 증명을 받아 사용하기 때문입니다. 임시 보안 자격 증명을 사용하여 인스턴스 외부로 호출하려면(예: IAM 정책 테스트) 액세스 키, 보안 키 및 세션 토큰을 제공해야 합니다. 자세한 내용은 *IAM 사용 설명서*에서 [임시 보안 자격 증명을 사용하여 AWS 리소스에 대한 액세스 요청](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)을 참조하세요.

# 인스턴스에 IAM 역할을 연결할 수 있는 권한 부여
<a name="permission-to-pass-iam-roles"></a>

IAM 사용자와 같은 AWS 계정의 ID에는 IAM 역할로 Amazon EC2 인스턴스를 시작하거나, 인스턴스에 IAM 역할을 연결하거나, 인스턴스의 IAM 역할을 바꾸거나, 인스턴스에서 IAM 역할을 분리할 수 있는 특정 권한이 있어야 합니다. 필요에 따라 다음 API 작업을 사용할 수 있는 권한을 부여해야 합니다.
+ `iam:PassRole`
+ `ec2:AssociateIamInstanceProfile`
+ `ec2:DisassociateIamInstanceProfile`
+ `ec2:ReplaceIamInstanceProfileAssociation`

**참고**  
`iam:PassRole`에 대한 리소스를 `*`로 지정하면 인스턴스에 모든 IAM 역할을 전달할 수 있는 액세스 권한이 부여됩니다. [최소 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)의 모범 사례를 따르려면 아래 정책 예제에서와 같이 `iam:PassRole`로 특정 IAM 역할의 ARN을 지정합니다.

**프로그래밍 방식 액세스를 위한 정책 예제**  
다음 IAM 정책은 AWS CLI 또는 Amazon EC2 API를 사용하여 IAM 역할로 인스턴스를 시작하거나, 인스턴스에 IAM 역할을 연결하거나, 인스턴스의 IAM 역할을 바꿀 수 있는 권한을 부여합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances",
         "ec2:AssociateIamInstanceProfile",
         "ec2:DisassociateIamInstanceProfile",
         "ec2:ReplaceIamInstanceProfileAssociation"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/DevTeam*"
    }
  ]
}
```

------

**콘솔 액세스에 대한 추가 요구 사항**  
Amazon EC2 콘솔을 사용하여 동일한 태스크를 완료할 수 있는 권한을 부여하려면 `iam:ListInstanceProfiles` API 작업도 포함해야 합니다.

# IAM 역할을 인스턴스에 연결
<a name="attach-iam-role"></a>

IAM 역할을 만들고 시작 도중 또는 후에 인스턴스에 연결할 수 있습니다. IAM 역할을 교체하거나 분리할 수도 있습니다.

**인스턴스 시작 중 IAM 역할 생성 및 연결(권장)**

1. EC2 인스턴스를 시작하는 동안 **고급 세부 정보**를 확장합니다.

1. **IAM 인스턴스 프로파일** 섹션에서 **새 IAM 역할 생성**을 선택합니다.

1. 인라인 역할 생성 양식이 열리고 다음을 수행할 수 있습니다.
   + **역할 이름**(예: `EC2-S3-Access-Role`)을 지정합니다.
   + AWS 관리형 정책을 선택하거나 인스턴스에 대한 사용자 지정 정책을 생성하여 권한 정의

     예를 들어, S3 액세스 권한을 부여하려면 `AmazonS3ReadOnlyAccess` 관리형 정책을 선택합니다.
   + `ec2.amazonaws.com`가 역할을 수임하도록 허용하는 신뢰 정책을 검토합니다.
   + 메타데이터에 대한 선택적 태그 추가

1. **역할 생성**을 선택합니다.

   새로 생성된 역할은 자동으로 선택되며 인스턴스가 시작될 때 인스턴스 프로파일을 통해 인스턴스에 연결됩니다.

**참고**  
인스턴스 시작 시 콘솔을 사용하여 역할을 생성하면 해당 역할과 동일한 이름의 인스턴스 프로파일이 자동으로 생성됩니다. 인스턴스 프로파일은 시작할 때 IAM 역할 정보를 인스턴스에 전달하는 컨테이너입니다.

**중요**  
인스턴스에 하나의 IAM 역할만 연결할 수 있지만, 여러 인스턴스에 동일한 역할을 연결할 수는 있습니다.
애플리케이션에 필요한 특정 API 호출에 대한 액세스를 제한하는 최소 권한 IAM 정책을 연결합니다.

IAM 역할 생성 및 사용에 대한 자세한 내용은 *IAM 사용 설명서*에서 [역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하십시오.

**인스턴스 시작 중 기존 IAM 역할 연결**  
Amazon EC2 콘솔을 사용하여 시작 시 인스턴스에 기존 IAM 역할을 연결하려면 **고급 세부 정보**를 확장합니다. **IAM 인스턴스 프로파일** 드롭다운 목록에서 IAM 역할을 선택합니다.

**참고**  
IAM 콘솔을 사용하여 IAM 역할을 생성한 경우 인스턴스 프로파일이 생성되고 역할과 동일한 이름이 지정됩니다. AWS CLI, API 또는 AWS SDK를 사용하여 IAM 역할을 생성한 경우 인스턴스 프로파일에 역할과 다른 이름을 지정했을 수 있습니다.

실행 중이거나 중지된 인스턴스에 IAM 역할을 연결할 수 있습니다. 인스턴스에 이미 IAM 역할이 연결되어 있는 경우 새 IAM 역할로 교체해야 합니다.

------
#### [ Console ]<a name="attach-iam-role-console"></a>

**IAM 역할을 인스턴스에 연결하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택합니다.

1. **Actions**(작업), **Security**(보안), **Modify IAM role**(IAM 역할 수정)을 선택합니다.

1. **IAM 역할**에 대해 IAM 인스턴스 프로파일을 선택합니다.

1. **IAM 역할 업데이트**를 선택합니다.

------
#### [ AWS CLI ]
<a name="attach-iam-role-instance-cli"></a>
**IAM 역할을 인스턴스에 연결하려면**  
[associate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) 명령을 사용하여 인스턴스에 IAM 역할을 연결합니다. 인스턴스 프로파일을 지정할 때 인스턴스 프로파일의 Amazon 리소스 이름(ARN) 또는 이름을 사용할 수 있습니다.

```
aws ec2 associate-iam-instance-profile \
    --instance-id i-1234567890abcdef0 \
    --iam-instance-profile Name="TestRole-1"
```

------
#### [ PowerShell ]

**IAM 역할을 인스턴스에 연결하려면**  
[Register-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2IamInstanceProfile.html) cmdlet을 사용합니다.

```
Register-EC2IamInstanceProfile `
    -InstanceId i-1234567890abcdef0 `
    -IamInstanceProfile_Name TestRole-1
```

------

이미 IAM 역할이 연결된 인스턴스에서 IAM 역할을 교체하려면 인스턴스가 실행 중이어야 합니다. 기존 인스턴스를 먼저 분리하지 않고 인스턴스에 대한 IAM 역할을 변경하려는 경우 이 작업을 수행할 수 있습니다. 예를 들어 인스턴스에서 실행 중인 애플리케이션에서 수행된 API 작업이 중단되지 않도록 하기 위해 이 작업을 수행할 수 있습니다.

------
#### [ Console ]<a name="replace-iam-role-console"></a>

**인스턴스에서 IAM 역할을 대체하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택합니다.

1. **Actions**(작업), **Security**(보안), **Modify IAM role**(IAM 역할 수정)을 선택합니다.

1. **IAM 역할**에 대해 IAM 인스턴스 프로파일을 선택합니다.

1. **IAM 역할 업데이트**를 선택합니다.

------
#### [ AWS CLI ]<a name="replace-iam-role-cli"></a>

**인스턴스에서 IAM 역할을 대체하려면**

1. 필요한 경우 [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) 명령을 사용하여 연결 ID를 가져옵니다.

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. [replace-iam-instance-profile-association](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-iam-instance-profile-association.html) 명령을 사용합니다. 기존 인스턴스 프로파일에 대한 연결 ID와 새 인스턴스 프로파일에 대한 ARN 또는 이름을 지정합니다.

   ```
   aws ec2 replace-iam-instance-profile-association \
       --association-id iip-assoc-0044d817db6c0a4ba \
       --iam-instance-profile Name="TestRole-2"
   ```

------
#### [ PowerShell ]

**인스턴스에서 IAM 역할을 대체하려면**

1. 필요한 경우 [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) cmdlet을 사용하여 연결 ID를 가져옵니다.

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. [Set-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2IamInstanceProfileAssociation.html) cmdlet을 사용합니다. 기존 인스턴스 프로파일에 대한 연결 ID와 새 인스턴스 프로파일에 대한 ARN 또는 이름을 지정합니다.

   ```
   Set-EC2IamInstanceProfileAssociation `
       -AssociationId iip-assoc-0044d817db6c0a4ba `
       -IamInstanceProfile_Name TestRole-2
   ```

------

실행 중이거나 중지된 인스턴스에서 IAM 역할을 분리할 수 있습니다.

------
#### [ Console ]<a name="detach-iam-role-console"></a>

**인스턴스에서 IAM 역할을 분리하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택합니다.

1. **Actions**(작업), **Security**(보안), **Modify IAM role**(IAM 역할 수정)을 선택합니다.

1. **IAM 역할(IAM role)**에서 **IAM 역할 없음(No IAM Role)**을 선택합니다.

1. **IAM 역할 업데이트**를 선택합니다.

1. 확인 메시지가 나타나면 **분리**를 입력하고 **분리**를 선택합니다.

------
#### [ AWS CLI ]<a name="detach-iam-role-cli"></a>

**인스턴스에서 IAM 역할을 분리하려면**

1. 필요한 경우 [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html)를 사용하여 분리할 IAM 인스턴스 프로파일에 대한 연결 ID를 가져옵니다.

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. [disassociate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html) 명령을 사용합니다.

   ```
   aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-0044d817db6c0a4ba
   ```

------
#### [ PowerShell ]

**인스턴스에서 IAM 역할을 분리하려면**

1. 필요한 경우 [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html)을 사용하여 분리할 IAM 인스턴스 프로파일의 연결 ID를 가져옵니다.

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. [Unregister-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2IamInstanceProfile.html) cmdlet을 사용합니다.

   ```
   Unregister-EC2IamInstanceProfile -AssociationId iip-assoc-0044d817db6c0a4ba
   ```

------

## Amazon EC2 인스턴스의 인스턴스 자격 증명 역할
<a name="ec2-instance-identity-roles"></a>

실행된 각 Amazon EC2 인스턴스에는 ID를 나타내는 *인스턴스 ID 역할*이 있습니다. 인스턴스 ID 역할은 일종의 IAM 역할입니다. 인스턴스 ID 역할을 사용하도록 통합된 AWS 서비스 및 기능은 이를 사용하여 서비스에서 인스턴스를 식별할 수 있습니다.

인스턴스 ID 역할 보안 인증 정보는 `/identity-credentials/ec2/security-credentials/ec2-instance`의 인스턴스 메타데이터 서비스(IMDS)에서 액세스할 수 있습니다. 보안 인증 정보는 AWS 임시 액세스 키 쌍과 세션 토큰으로 구성됩니다. 인스턴스 ID 역할을 사용하는 AWS 서비스에 대한 AWS Sigv4 요청에 서명하는 데 사용됩니다. 보안 인증 정보는 인스턴스 ID 역할을 사용하는 서비스 또는 기능이 인스턴스에서 활성화되었는지 여부에 관계없이 인스턴스 메타데이터에 표시됩니다.

인스턴스 ID 역할은 인스턴스가 시작될 때 자동으로 생성되며, 역할 신뢰 정책 문서가 없으며, ID 또는 리소스 정책의 적용을 받지 않습니다.

### 지원되는 서비스
<a name="iir-supported-services"></a>

다음 AWS 서비스는 인스턴스 ID 역할을 사용합니다.
+ **Amazon EC2** – [EC2 Instance Connect](connect-linux-inst-eic.md)는 인스턴스 ID 역할을 사용하여 Linux 인스턴스의 호스트 키를 업데이트합니다.
+ **Amazon GuardDuty** - [GuardDuty 런타임 모니터링](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html)은 인스턴스 ID 역할을 사용하여 런타임 에이전트가 GuardDuty VPC 엔드포인트로 보안 원격 측정을 전송할 수 있도록 합니다.
+ **AWS Lambda** - [Lambda 관리형 인스턴스](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html)는 수명 주기 후크, 원격 측정 및 아티팩트 배포에 인스턴스 ID 역할을 사용합니다.
+ **AWS Security Token Service(AWS STS)** – 인스턴스 ID 역할 보안 인증 정보를 AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html) 작업과 함께 사용할 수 있습니다.
+ **AWS Systems Manager**— [기본 호스트 관리 구성](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-default-host-management-configuration.html)을 사용하는 경우 AWS Systems Manager는 인스턴스 ID 역할에서 제공하는 ID를 사용하여 EC2 인스턴스를 등록합니다. 인스턴스를 식별한 후 Systems Manager는 사용자의 `AWSSystemsManagerDefaultEC2InstanceManagementRole` IAM 역할을 인스턴스에 전달할 수 있습니다.

인스턴스 ID 역할은 인스턴스 ID 역할과 통합되지 않으므로 다른 AWS 서비스 또는 기능과 함께 사용할 수 없습니다.

### 인스턴스 ID 역할 ARN
<a name="iir-arn"></a>

인스턴스 ID 역할 ARN은 다음과 같은 형식을 사용합니다.

```
arn:aws-partition:iam::account-number:assumed-role/aws:ec2-instance/instance-id
```

예제:

```
arn:aws:iam::0123456789012:assumed-role/aws:ec2-instance/i-1234567890abcdef0
```

ARN에 대한 자세한 내용은 *IAM 사용 설명서*의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)을 참조하세요.