Amazon Web Services 한국 블로그

운영 중인 EC2 인스턴스에 IAM 역할 연결하기

AWS Identity and Access Management (IAM)의 역할을 통해 Amazon EC2 에서 실행되는 응용 프로그램이 자동 생성, 배포되는 임시 보안 자격 증명을 사용할 수 있습니다 . 임시 자격 증명을 사용하는 것은 IAM 모범 사례로서 인스턴스에서 직접 키 관리를 하지 않아도 됩니다.

2017-02-aws-iam-ec2-instance

즉, EC2 IAM 역할 적용 기능을 사용하여 장기적인 AWS 액세스 키(Access Key)를 수동 혹은 프로그램에서 직접 관리 할 필요가 없습니다. 얼마 전, IAM 역할을 통해 기존 EC2 인스턴스 응용 프로그램에서 AWS에서 제공하는 임시 보안 자격 증명을 사용할 수 있게 되었습니다. 또한 기존 EC2 인스턴스에 첨부 되어있는 IAM 역할을 변경할 수 있습니다.

이 글에서는 AWS CLI를 사용하여 기존 EC2 인스턴스에 IAM 역할을 손쉽게 변경하는 방법을 소개합니다. 아래는 이 글의 주요 순서입니다.

  1. IAM 역할 생성 하기
  2. EC2 인스턴스에 신규 IAM 역할 추가하기
  3. EC2 인스턴스에서 기존 IAM 역할 변경하기

이 글에서는 새로 만든 IAM 역할을 “YourNewRole”라고합니다. 이 역할과 연관된 인스턴스 프로파일을 “YourNewRole-Instance-Profile” 기존 인스턴스를 “YourInstanceId”라고 하겠습니다. 여기에서는 AWS 명령 줄 인터페이스 (CLI) 설정을 완료하고, IAM 역할을 만들 권한 및 EC2 API를 호출 권한을 가지고 있음을 전제로 하고 있습니다.

1. IAM 역할 생성 하기

참고 : 기존 IAM 역할을 연결할 경우, 이 글 아래의 “EC2 인스턴스에 신규 IAM 역할 추가하기”를 보시기 바랍니다. 또한, AWS 관리 콘솔을 사용하여 IAM 역할을 생성하고 진행하면 됩니다.

AWS CLI에서 IAM 역할을 생성하기 전에 신뢰 정책(Trust policy)을 작성해야합니다. 신뢰 정책은 EC2 등의 AWS 서비스가 응용 프로그램 대신 IAM 역할을 맡도록 허용합니다. 신뢰 정책을 만들려면, 아래 정책을 복사하여 YourNewRole-Trust-Policy.json로 저장 한 텍스트 파일에 붙여 넣습니다.

Json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

신뢰 정책을 만들면 기존 EC2 인스턴스에 연결할 수 있는 IAM 역할을 만들 준비가 되었습니다.

AWS CLI에서 IAM 역할을 만들기:

  1. AWS CLI에서 create-role 명령을 호출하여,  YourNewRole-Trust-Policy.json을 기반으로 YourNewRole이라는 IAM 역할을 생성합니다.
    $aws iam create-role --role-name YourNewRole --assume-role-policy-document file://YourNewRole-Trust-Policy.json
    
  2. 만들어진 IAM 역할에 계정 자원에 대한 접근 권한을 부여하려면, attach-role-policy 명령을 호출합니다. 아래 는 애플리케이션이 Amazon S3 버킷의객체에 대한 읽기 권한이 필요한 경우입니다. 따라서, AWS 관리 정책 중 하나인 AmazonS3ReadOnlyAccess을 사용합니다. AWS 관리 정책에 대한 자세한 내용은 “관리 정책 기술 문서“를 참조하십시오.
    $aws iam attach-role-policy --role-name YourNewRole --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
  3. create-instance-profile 명령 및 add-role-to-instance-profile 명령을 실행하여, IAM 인스턴스 프로파일 “YourNewRole-Instance-Profile“을 만듭니다. 인스턴스 프로파일을 통해 EC2는 IAM 역할 “YourNewRole“을 EC2 인스턴스에 추가할 수 있습니다. 자세한 내용은 “인스턴스 프로파일 사용“을 참조하십시오.
    $aws iam create-instance-profile --instance-profile-name YourNewRole-Instance-Profile
    $aws iam add-role-to-instance-profile --role-name YourNewRole --instance-profile-name YourNewRole-Instance-Profile

“YourNewRole”라는 IAM 역할을 성공적으로 만들었습니다.

2. EC2 인스턴스에 신규 IAM 역할 추가하기

이제 YourNewRole이라는 IAM 역할을 EC2 인스턴스 YourInstanceId에 연결할 준비가 되었습니다. 이제 추가해 보겠습니다.

  1. associate-iam-instance-profile 명령을 호출하여, 새로 생성 된 IAM 역할 “YourNewRole-Instance-Profile”, “YourNewRole” 인스턴스 프로파일을 EC2 인스턴스 “YourInstanceId”에 연결합니다.
    $aws ec2 associate-iam-instance-profile --instance-id YourInstanceId --iam-instance-profile Name=YourNewRole-Instance-Profile
  2. describe-iam-instance-profile-association 명령을 호출하여 IAM 역할이 제대로 인스턴스에 연결되어 있는지 확인합니다.
    $aws ec2 describe-iam-instance-profile-associations
  3. 이제 IAM 역할을 사용하여 AWS 자원에 접근할 수 있도록 애플리케이션을 업데이트하고, 인스턴스에서 보안 키를 삭제할 수 있습니다.

3. EC2 인스턴스에서 기존 IAM 역할 변경하기

기존 IAM 역할의 요구 사항이 변경되어, 기존 EC2 인스턴스에 부여 된 권한을 변경할 필요가 있는 경우 IAM 역할과 관련된 정책을 바꿀 수 있습니다. 새로 변경된 IAM 역할을 사용하는 다른 EC2 인스턴스의 권한도 변경됩니다.대신 replace-iam-instance-profile-association 명령을 호출하여 현재 연결되어있는 IAM 역할 “YourNewRole”다른 IAM 역할을 대체 할 수 있습니다. 아래 예제에서는 “YourCurrentAssociation-id”를 사용하여, 현재 iam-instance-profile-association 인스턴스를 나타내고, “YourReplacementRole-Instance-Profile”을 사용하여 인스턴스에 연결할 대체 인스턴스 프로파일을 나타냅니다. 이 자리 표시자를 적절한 association-id와 계정의 IAM 인스턴스 프로필 이름을 변경하십시오.

$aws ec2 replace-iam-instance-profile-association --association-id YourCurrentAssociation-id --iam-instance-profile Name=YourReplacementRole-Instance-Profile 

참고 : YourCurrentAssociation-id는 describe-iam-instance-profile-associations를 호출하여 얻을 수 있습니다.

이 글에서는 EC2 인스턴스를 다시 시작하지 않고, 기존 EC2 인스턴스에 IAM 역할을 추가 혹은 변경하여 애플리케이션이 AWS에서 제공하는 임시 보안 자격 증명을 사용할 수 있습니다. 중요한 애플리케이션 중단 없이 EC2 인스턴스에 연결된 IAM 역할을 대체 할 수 있습니다.

이 게시물에 대한 의견이나 질문이나 제안이 있으시면, IAM 포럼에서 의견 주시기 바랍니다.

– Apurv;

이 글은 New! Attach an AWS IAM Role to an Existing Amazon EC2 Instance by Using the AWS CLI의 한국어 번역입니다.