JUST WRITE

credentials 설정 안해도 되네?! - AWS EC2 IAM 연결 본문

Cloud

credentials 설정 안해도 되네?! - AWS EC2 IAM 연결

천재보단범재 2023. 8. 3. 17:28

AWS EC2 IAM 연결

credentials 설정 안해도 되네?!

Terraform을 통해서 AWS EC2를 생성하고 세팅하려면 권한이 필요합니다.

해당 권한을 AWS IAM을 통해서 생성하고 EC2에 aws configure를 통해서 설정하였습니다.

그러면 credetials 파일이 생성되어 해당 파일의 권한 정보로 EC2를 생성하였습니다.

# 1. aws command
$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]:

# 2. credentials 파일 생성
$ vi ~/.aws/credentials 
[default]
aws_access_key_id = ${access-key}
aws_secret_access_key = ${secret-key}

아래 포스팅에서 자세한 사항을 확인할 수 있습니다.

 

명령어 한 번에 Kubernetes 설치하기 - Terraform으로 Kubernetes 설치

명령어 한 번에 Kubernetes 설치하기 개발 환경을 자주 구성하다 보니 Kubernetes Cluster를 구성하는 일이 많았습니다. Kubernetes Cluster 구성은 단계도 많고 쉽지 않아 할 때마다 새로웠습니다. 구성을 간

developnote-blog.tistory.com

다만 이 방식은 access-key와 secret-key를 서버에 노출시킨다는 단점이 있습니다.

credentials 파일을 생성하지 않고 바로 EC2에 해당 권한을 줄 수 있습니다.

이번 포스팅에서 이 방식을 정리하도록 하겠습니다.

IAM 역할 생성 및 연결

먼저 EC2 관련 권한이 있는 역할을 생성합니다.

AmazonEC2FullAccess 권한을 가진 역할을 생성하였습니다.

먼저 생성해두었던 credentials 파일을 삭제하고 aws cli를 실행해 보았습니다.

EC2 Instance 리스트를 조회하였지만 credetials을 설정하라는 메시지만 나옵니다.

$ rm ~/.aws/credentials

$  aws ec2 describe-instances

Unable to locate credentials. You can configure credentials by running "aws configure".

이제 생성한 IAM 역할을 해당 EC2에 연결해 보았습니다.

AWS Console에서 쉽게 역할을 수정할 수 있습니다.

해당 EC2를 선택하고 작업에서 IAM 역할 수정을 선택합니다.

EC2 역할 추가(1)

생성한 역할을 선택 후 업데이트 합니다.

EC2 역할 추가(2)

역할을 추가하고 EC2에서 AWS cli로 Instance list가 나오는 것을 확인할 수 있습니다. 

$ aws ec2 describe-instances
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-0425f132103cb3ed8",
                    "InstanceId": "i-067ef0dd62bdb257c",
                    "InstanceType": "t2.micro",
                    "KeyName": "coxspace_dev",
                    "LaunchTime": "2023-08-03T01:23:11+00:00",
                    "Monitoring": {
                        "State": "disabled" 
                    },
                    "Placement": {
                        "AvailabilityZone": "ap-northeast-2c",
                        "GroupName": "",
                        "Tenancy": "default" 
                    },
                    "PrivateDnsName": "ip-172-31-46-225.ap-northeast-2.compute.internal",
                    "PrivateIpAddress": "172.31.46.225",
                    "ProductCodes": [],
                    "PublicDnsName": "ec2-54-180-24-81.ap-northeast-2.compute.amazonaws.com",
                    "PublicIpAddress": "54.180.24.81",
                    "State": {
                        "Code": 16,
                        "Name": "running" 
                    },
                    "StateTransitionReason": "",
                    "SubnetId": "subnet-f06d9fbf",
                    "VpcId": "vpc-3c54c857",
                    "Architecture": "x86_64",
                    "BlockDeviceMappings": [
                        {
                            "DeviceName": "/dev/xvda",
                            "Ebs": {
                                "AttachTime": "2023-07-04T01:10:29+00:00",
                                "DeleteOnTermination": true,
                                "Status": "attached",
                                "VolumeId": "vol-03d2a20e74a110b89" 
                            }
                        }
                    ],
                    "ClientToken": "088b10cb-1952-4b8a-9aab-386046293f29",

서버에 access-key와 secret-key를 남기지 않아서 보안적으로 유리합니다.

EC2에서 AWS 컨트롤하려면 해당 방법을 통해 컨트롤하는 것을 추천합니다.

728x90
반응형
Comments