끄적이는 보송

[AWS] 자격 증명 없이 EC2에서 S3 액세스 본문

STUDY/AWS

[AWS] 자격 증명 없이 EC2에서 S3 액세스

끄적이는 보송 2022. 2. 18. 16:48
반응형

자격 증명 없이 EC2 인스턴스가 직접 S3에 액세스 할 수 있도록 구성해보려 한다. 누군가의 부주의로 Key가 유출되는 경우가 종종 있어 아예 EC2 직접 S3권한을 부여하면 문제가 조금은 해소되지 않을까 싶어 시작했으며 이참에 겸사겸사 기록해본다. 

 

준비물

1. 기본적인 클라우드 환경

2. EC2

3. S3

4. EC2에서 S3로 붙기위한 IAM Role

 

1. S3 생성

S3 버킷의 이름은 고유해야 하며 2개를 생성했다. 이 중 하나만 EC2가 접근할 수 있도록 구성해볼 생각이다. Role 정상적이라면 나머지 다른 하나에 대한 접근 권한을 없을 것이다.

 

2. EC2 생성

EC2 인스턴스 아무런 AWS 자격증명 정보를 입력하지 않았으며 어떠한 Role도 부여받지 않은 모습이다. 필자는 원래 돌리고 있던 테스트 서버를 재활용했다.

 

3. IAM Role 생성

IAM 콘솔 페이지 > 왼쪽 사이드 바 Roles 클릭 > Create role 클릭 > 'Trusted entity type'에서 EC2 서비스 선택 > NEXT > Create Policy 클릭 > JSON 탭 선택하면 다음과 같은 창이 보인다. 필자는 다음과 같이 정책을 입력했다.

아까 생성한 S3 버킷 중, 'tokyo-test-boseong-bucket'만 EC2가 접근할 수 있는 역할을 만들 생각이다. 위 정책으로 'tokyo-test-boseong-bucket' 버킷에 간단하게 파일을 업로드해 볼 생각이다. 하지만 S3 버킷 리스트 출력 시, Access Deny 에러 출력을 방지하고자 관련 Action은 *로 모든 버킷을 지정했다. 어쨌거나 코드 작성을 완료했으면

Netx:Review 클릭 > 이름 입력 > Create Policy 클릭

생성되었다.

 

4. EC2에 IAM Role 부여

EC2 콘솔 > EC2 인스턴스 마우스 우클릭 > Security > Modify IAM Role 클릭하여 생성한 IAM Role을 선택하고 저장해 주자.

 

5. EC2에서 S3 액세스 테스트

내가 소유한 S3 버킷 리스트를 호출해 보았다. 만약 리스트 명령어 관련해서 'tokyo-test-boseong-bucket'만 허용하도록 역할을 생성했다면 'aws s3 ls' 명령어에 Access Denied 에러가 출력이 됐을 것이다. 이유는 'tokyo-test-boseong-bucket2'에 대한 리스트 명령어를 때릴 권한은 없기 때문이다.

다른건 몰라도 ls 명령어 쳐서 어떤 버킷이 있는지 확인 정도는 괜찮잖아?

아무 파일이나 만들어서 'tokyo-test-boseong-bucket' 버킷에 올려본다.

성공적으로 올라간 듯하다. 콘솔 환경에서 직접 확인해보자.

제대로 올라갔다.

 

반면 'tokyo-test-boseong-bucket2' 버킷은 파일 업로드를 하지 못하고 있다. 원하는 그림대로 구성되었다.

 

반응형
Comments