5. AWS CLI - CloudShell
AWS CloudShell (일본 도쿄 리전) 접속
→ 최초 접속 시 환경 구성으로 2~5분 정도 소요(미리 서비스 접근) ⇒ AWS CLI 사용해보기
서울 리전에서 접속은 아직 안된다
Region Unsupported
CloudShell is not available in 아시아 태평양 (서울). Please select another region.
# 현재 AWS Web Console 로그인된 계정의 정보(권한)으로 AWS CLI 환경 사용
# AWS CLI 사용 보안 주체의 정보
[cloudshell-user@ip-10-0-129-xx ~]$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ******************** container-role
secret_key ******************** container-role
region ap-northeast-1 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
# s3 버킷 조회
[cloudshell-user@ip-10-0-129-xx ~]$ aws s3 ls
# S3 버킷 생성
[cloudshell-user@ip-10-0-129-xx ~]$ aws s3 mb s3://s3-mym --region ap-northeast-2
make_bucket: s3-mym
# S3 버킷 삭제
[cloudshell-user@ip-10-0-129-xx ~]$ aws s3 rb s3://s3-mym
remove_bucket: s3-mym
6. CloudTrail
AWS API 모든 기록 확인 => 특정 이벤트 클릭 시 상세 정보(레코드) 출력
7. IAM User 생성 및 로그인
root 계정으로 로그인 URL에 사용할 별칭 생성
- IAM -> 별칭생성 -> 전세계 유일한 별칭으로 입력 ->이후 해당 로그인URL로 IAM User 로그인
IAM USER 생성
- IAM -> 사용자 클릭 사용자 추가 클릭 : IAM User(admin, viewuser) 생성
- admin 계정 생성
- viewuser 계정 생성
- IAM 사용자로 Web Console 로그인
- 내가 설정한 로그인 URL 동작 확인 : https://minimun92.signin.aws.amazon.com/console
- 위에서 생성한 admin, viewuser 사용자 로그인 후 EC2 생성 혹은 S3 버킷 생성 시도
- -> 이런저런 권한 부족의 메세지가 출력되는것을 알 수 있다.
admin 사용자로 AWS CLI사용하기
- AWS CloudShell (일본 도쿄 리전) 접속 → admin 사용자의 자격 증명 설정 - 링크
# aws cli 사용을 위한 자격 증명 설정
[cloudshell-user@ip-10-0-151-*** ~]$ aws configure
AWS Access Key ID [None]: AKIAXHN32FXN6TVFXV6Z
AWS Secret Access Key [None]: *****************************fz99
Default region name [None]: ap-northeast-2
Default output format [None]: table
# 자격 증명 List 확인
[cloudshell-user@ip-10-0-151-*** ~]$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************XV6Z shared-credentials-file
secret_key ****************fz99 shared-credentials-file
region ap-northeast-1 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
$ aws ec2 describe-vpcs
[cloudshell-user@ip-10-0-151-*** ~]$ aws ec2 describe-vpcs
-------------------------------------------------------------------------------------------------------------------
| DescribeVpcs |
+-----------------------------------------------------------------------------------------------------------------+
|| Vpcs ||
|+---------------+----------------+------------------+------------+---------------+-------------+----------------+|
|| CidrBlock | DhcpOptionsId | InstanceTenancy | IsDefault | OwnerId | State | VpcId ||
|+---------------+----------------+------------------+------------+---------------+-------------+----------------+|
|| 172.31.0.0/16| dopt-15816073 | default | True | 49*****76699 | available | vpc-d1a259b7 ||
|+---------------+----------------+------------------+------------+---------------+-------------+----------------+|
||| CidrBlockAssociationSet |||
||+------------------------------------------------------------------+------------------------------------------+||
||| AssociationId | CidrBlock |||
||+------------------------------------------------------------------+------------------------------------------+||
||| vpc-cidr-assoc-c114d0aa | 172.31.0.0/16 |||
||+------------------------------------------------------------------+------------------------------------------+||
|||| CidrBlockState ||||
|||+-----------------------------------------+-----------------------------------------------------------------+|||
|||| State | associated ||||
|||+-----------------------------------------+-----------------------------------------------------------------+|||
8. IAM Role
CloudFormation 스택 생성 - 링크 클릭 후 템플릿 파일로 기본 환경 자동 배포
- 스택 이름(편하게 입력), 파라미터(KeyName - 자신의 SSH 키 선택) 다음 클릭
- 스택 옵션 구성 다음 클릭
- 맨 하단에 아래 IAM 리소스 생성 승인 체크 후 스택 생성 클릭
- BasicEC2 배포
- S3IAMRoleEC2 배포 → STGLabInstanceRole 적용
- STGLabInstanceRole IAM Role 생성
STGLabInstanceRole:
Type: AWS::IAM::Role
Properties:
RoleName: STGLabInstanceRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Principal:
Service:
- ec2.amazonaws.com
Action:
- sts:AssumeRole
Path: /
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonS3FullAccess
- BasicEC2 SSH 접속
# S3 버킷 조회
aws s3 ls
# VPC 정보 확인
$ aws ec2 describe-vpcs
# S3 버킷 조회
aws s3 ls
----------------------[옵션]---------------------
# aws cli 사용을 위한 자격 증명 설정 (admin)
$ aws configure
AWS Access Key ID [None]: ################
AWS Secret Access Key [None]: #####################
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'
- S3IAMRoleEC2 접속 → 자격 증명 없이도 S3 사용 가능!
# 현재 EC2에 적용된 IAM Role(EC2 Profile) 정보 확인
[ec2-user@S3IAMRoleEC2 ~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/STGLabInstanceRole
{
"Code" : "Success",
"LastUpdated" : "2021-07-19T04:26:53Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "*********FO65W3",
"SecretAccessKey" : "**************JPYM761y",
"Token" : "IQoJb3JpZ2luX2VjEIz//////////wEaDmFwLW5vcnRoZWFzdC0yIkgwRgIhAOAqy2uv2NH+U3OXkpljzyy4wJRBt/PtTFWiZOOJYUD2AiEAmi74UsyWKFxaazdLpgDU5wXosyyhYbgX3pIcmGZZdAMqjQQIhv//////////ARAAGgw0OTY5OTk0NzY2OTkiDOEV8BsfabxWVpPCfCrhA0tCFWFtXUv9DJGU27CLn9asvB4QTtrIhUZNwmGZOw69JkD6qG91yi139z/vRRN4EbmosVe2S5n9+gbDSC2VUgYtPN5CkDoMPY0p4u+NpvxgchON2kpUaUicOQWw06B/qyse0OgaMxeLuGcnjAefPbVcslwDfkxsdC+8kONKw/BaqZDP34NkNYe1NeKfdw272uL3xiiSt9M3ymrev18TrIuM9X3LEoV1Z/38+1CeTsE2/gPeXWJ59raM5rvSxGFvdt1XQrifxq5KZcw2+Ka3EnWxzSxcYIK1k4/ccNoeDB85OQnZmdxxVF9XRBCKvfxa8R2LEDdAQ8JHKeQnskZHqEQeAgPU9Vs0bRi5Jadr34DpYbSOJFwuzKAUCqo6YcqCh9e9pfElItfY/LSanXFcFaO+yu8l4lBxMRUJyHGSZVDaFL2S5BsOAWDkFBeOH3CElHspEUgyh7m8EpOcNdlbjPdLpsuaIfDBZgFs9WkObfb3E5aWct0KPE6Og2wbFt32PAyI/UC4Y3OpqeeC9zvZ6VESjKYoQl6EzwUUOwH6/6iqPx+M4SGgR4r/EsGj9c9+hQwfXRH5PcHEmg/DzDcNUHwcTBr/qTpnYQx+v/FjL01PtTI73p8DVnNssc8Lq1+CHi8wqv7ThwY6pAFdx/UPVKo4hDQmfjPjmcrrF28nBt35LvzeZ9+uUWfxfUFx0/4VThcgtok8xP31rpn2SA4GTz9/tnUCh7gY71lViiHEJOGiSRRgQEVaEkLoTlzwibPwBvgR7EwUoyi0RnMUyigQ3vEDCp7Bx1wyl94qmPDuTbtUwCUQSbpQx1cYaRUXfCC9qqtZJOIt43eA8LLSFCW+F7urp3wUmLr8bps+4TLqTA==",
"Expiration" : "2021-07-19T11:02:22Z"
}
# S3 버킷 조회
aws s3 ls
# S3 버킷 생성
aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2
# S3 버킷 삭제
aws s3 rm s3://버킷
# VPC 정보 확인
$ aws ec2 describe-vpcs
9. IAM Policy
EC2 종료 중지 삭제 하는 정책을 admin 계정에 적용 후 확인
- IAM - 사용자 - admin 클릭 -> +인라인 정책 추가 클릭
- JSON 클릭 후 아래 내용 입력 후 하단 정책 검토 클릭
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ec2:RebootInstances",
"ec2:StopInstances",
"ec2:TerminateInstances"
],
"Resource": "*"
}
]
}
- 이름(편한대로 입력) -> 하단 정책 생성 클릭
# 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'
- BasicEC2 에서 admin 자격 증명으로 ec2 재부팅 실행 시 Policy 에 의해서 차단된 aws cli 출력 로그 & 웹 콘솔의 IAM Policy 정책 스샷
정책에서 재시작 액션을 Deny해서 불가능
10. Root 계정에 MFA 활성화
- IAM -> 사용자 -> 사용자 이름 -> 보안자격 증명 -> 할당된 MFA 디바이스 관리 클릭 후 절차대로
'Infra > cloud' 카테고리의 다른 글
[AFOS] 6주차 데이터베이스 서비스 - 실습 : RDS (0) | 2021.07.19 |
---|---|
[AFOS] 6주차 데이터베이스 서비스 (0) | 2021.07.19 |
[AFOS] 5주차 보안 서비스 (0) | 2021.07.17 |
[AFOS] 4주차 스토리지 서비스 - 실습 : S3 (0) | 2021.07.13 |
[AFOS] 4주차 스토리지 서비스 - 실습 : EFS (0) | 2021.07.13 |