AWS CLI로 IAM Role 생성해 보기

AWS CLI로 IAM Role 생성해 보기

AWS CLI로 IAM Role을 생성해 보는 과정을 정리해 봤습니다.
Clock Icon2022.03.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS CLI로 IAM Role을 생성해 보는 과정을 정리해 봤습니다.

json 생성

먼저 sts:AssumeRole 이라는 임시 자격 증명을 받을 수 있는 정책을 생성합니다.

이 정책을 생성하기 위해서는 json 파일을 작성할 필요가 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "iam:ListRoles",
                "sts:AssumeRole"
            ],
            "Resource": "*"
        }
    ]
}

기본적인 json 정책 코드는 다음과 같습니다.

 

여기서 sts:AssumeRole만을 사용하고 싶으면 아래와 같은 코드가 됩니다.

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

 

IAM Role 생성

aws iam create-role \
    --role-name test-role \
    --assume-role-policy-document file://assumeRole.json

aws iam create-role 명령은 IAM 역할을 생성하고, 이전에 생성한 json 파일에 따라 신뢰 관계를 정의합니다.

aws iam attach-role-policy \
    --role-name test-role \
    --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

aws iam attach-role-policy \
    --role-name test-role \
    --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

이어서 각각의 정책을 IAM Role에 추가합니다.

여기까지 하면 무사히 IAM Role 생성이 된 것을 확인할 수 있습니다.

Instance Profile 생성

이어서 EC2 Instance에 IAM Role을 연결하기 위해서는 Instance Profile을 생성할 필요가 있습니다.

 

aws iam create-instance-profile \
    --instance-profile-name test-role

aws iam add-role-to-instance-profile \
    --instance-profile-name test-role \
    --role-name test-role

다음 명령어로 Instance Profile을 생성합니다. Instance Profile 이름은 IAM Role이름과 동일하게 사용해도 상관 없습니다.

aws ec2 associate-iam-instance-profile --iam-instance-profile Name=test-role --instance-id i-xxxx

그리고 위 명령어로 인스턴스에 Instance Profile을 추가하면 EC2 Instance에 IAM Role이 추가된 것을 확인할 수 있습니다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 [email protected]로 보내주시면 감사하겠습니다.

참고

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.