클라우드에 늘 언급되는 보안 부분인 만큼 확실하게 이해하고 넘어가야 합니다.
먼저 AWS를 사용하는 방법들에 대해 알아보겠습니다.
- 실습때 주로 사용했던 실제 AWS 웹페이지에서 관리 콘솔로 리소스 만들기
- script 형식 템플릿을 이용하여 AWS SDK를 통한 리소스 만들기
- yaml 형식 템플릿을 이용하여 AWS CloudFormation을 통한 리소스 만들기
- 주로 사용하는 개발 언어로 작성 후 AWS CDK를 이용하여 템플릿으로 전환 후 리소스 만들기
따라서 모든 방식은 결국 AWS 리소스를 사용 시 혹은 AWS 리소스들간 최종적으로는 API(Application Programming Interface) 를 사용합니다.
하지만 여기서 사용자의 인증과 비밀키 등은 매 API 호출때마다 AWS CLI, AWS CDK등에 의해 자동으로 인증이 됩니다.
AWS Identify and Access Management (IAM) : AWS 전체의 권한 통제 시스템입니다.
글로는 이해하기 힘드니 직접 해보겠습니다.
1. AWS 웹 콘솔에서 IAM 서비스로 들어갑니다.
2. IAM 대시보드에서 편집을 누르면 중복이 불가능한 자신의 별칭으로 URL이 변경됩니다.
3. 사용자에서 사용자 추가를 누릅니다.
4. 아래와 같이 admin이란 사용자를 만들고 비밀번호는 평소대로 설정해주고 다음을 누릅니다.
5. 기존 정책에 연결해주고 밑의 키관련 정보는 .csv 파일을 다운받아 보관해줍니다.
6. 마찬가지로 똑같이 viewuser를 만들어준 후 정책만 아래와 같이 연결해줍니다.
7. admin으로 접속이 잘 되는지 한 번 확인해봅니다. 계정 ID는 처음에 변경했던 자신의 별칭입니다.
8. 자격 증명을 간단하게 알아보기 위해 도쿄 리전으로 설정하고 AWS CloudShell 서비스로 다음을 입력해봅니다.
# aws cli 사용을 위한 자격 증명 설정
$ aws configure # 액세스 키와 비밀 키는 .csv 파일에 있는 코드를 복사해서 넣어줍니다.
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-northeast-2
Default output format [None]: table
# 자격 증명 List 확인
$ aws configure list
# VPC 정보 확인
$ aws ec2 describe-vpcs
9. 다시 root 계정으로 돌아와 AWS CloudFormation에서 스택생성을 클릭합니다.
하지만 매번 이렇게 사용자를 추가하여 인증시키는 방법이 번거로울땐 AWS IAM Role 서비스를 사용하면 좋습니다.
AWS IAM Role: 정의된 권한 범위 내 AWS API 를 사용할 수 있는 임시 자격 증명이 가능함
10. 준비된 템플릿으로 지정 후 아래와 같은 URL을 넣어줍니다.
https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/IAM/iamlab.yaml
11. 스택 이름은 자유롭게 하며 키만 자신이 예전에 생성해놓은 키로 설정해줍니다.
12. 마지막 검토 단계에서 맨 밑에 이 부분을 체크해줍니다.
13. AWS EC2 서비스에 인스턴스가 정상적으로 작동하고 있는지 확인합니다.
14. BasicEC2에 퍼블릭 IP를 가지고 IAM Role이 제대로 동작하는지 확인하기위해 Xshell7을 실행합니다.
15. 아래와 같이 코딩하면서 정상적으로 자격 증명을 확인할 수 있는지 확인합니다.
# S3 버킷 조회
aws s3 ls
# VPC 정보 확인
$ aws ec2 describe-vpcs
# 자격 증명을 하기 전까지는 확인할 수 없다는 말이 나옵니다.
----------------------[옵션]---------------------
# aws cli 사용을 위한 자격 증명 설정 (admin)
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EX####
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MD####
Default region name [None]: ap-northeast-2
Default output format [None]: table
# 자격 증명 List 확인
$ aws configure list
# VPC 정보 확인
$ aws ec2 describe-vpcs
# ec2 조회
aws ec2 describe-instances
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Instance:InstanceId,Name:Tags[?Key==`Name`]|[0].Value}' --output text
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Instance:PrivateIpAddress,Name:Tags[?Key==`Name`]|[0].Value}' --output text
# S3IAMRoleEC2 재시작
aws ec2 reboot-instances --instance-ids 'S3IAMRoleEC2'
ping 'S3IAMRoleEC2'
16. 이번엔 S3IAMRoleEC2 SSH로 접속을 해보겠습니다.
# 현재 EC2에 적용된 IAM Role(EC2 Profile) 정보 확인
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/STGLabInstanceRole
# S3 버킷 조회
aws s3 ls
# S3 버킷 생성
aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2
# S3 버킷 삭제
aws s3 rm s3://버킷
# VPC 정보 확인
$ aws ec2 describe-vpcs
17. 별도의 자격증명 없이도 작업을 수행할 수 있다는 것을 알 수 있습니다.
18. 이제 실습이 끝났다면 AWS CloudFormation을 삭제시켜주고 생성했던 User들도 삭제해줍니다.
19. 시간이 어느정도 지난 후 EC2가 제대로 삭제되었는지 확인하고 끝냅니다.
보안 서비스에는 더욱 더 많은 내용들이 있기에 이 내용뿐만 아니라 관련된 내용들을 찾아보고 확실하게 익히시길 바라겠습니다.
저또한 확실하게 개념을 잡은 후에 차근차근 작성해보도록 하겠습니다.
'AWS > 실습(입문)' 카테고리의 다른 글
AWS-입문(7주차) 네트워크 부하분산 서비스 (0) | 2021.07.23 |
---|---|
AWS-입문(6주차) 데이터베이스 서비스 (1) | 2021.07.15 |
AWS-입문(4주차) 스토리지 서비스 (0) | 2021.07.01 |
AWS-입문(3주차) 네트워킹 서비스 (0) | 2021.06.28 |
AWS-입문(2주차) EC2 배포 - 2 (0) | 2021.06.17 |