[ AWS CLI Configuration ]
properly configure the CLI
1. Bad way
User 의 security credential 정보 (access key id/secret access key)를 사용하여(aws configure 명령어를 통해) EC2 에 인증 및 사용하는 방법은 보안에 취약하므로 로컬 및 사내망이 아닌 경우 지양
- We could run 'aws configure' on EC2.
- This ways is super insecure, never put your personal credentials on an EC2
- your personal credentials are personal and only belong on your personal computer
- If the EC2 is compromised, so is your personal account
- If the EC2 is shared, other people may perform AWS actions while impersonating you
> aws configure
> user 의 access key id 입력
> user 의 secret access key 입력
> region name 입력
> cat ~/.aws/credentials 로 로그인한 계정의 정보(access key id/secret access key)를 열람 할 수 있음 (보안에 취약)
2. Right way
IAM Role 과 policy를 설정하여 EC2 인스턴스에 인증하는 방식을 사용
- IAM Roles can be attached to EC2 instances
- IAM Roles can come with a policy authorizing exactly what the EC2 instance should be able to do
- EC2 Instances can the use these profiles automatically without any additional configurations
* JSON generator(설정권한 등을 UI로 확인 및 선택 가능) 를 사용하여 IAM JSON 을 쉽게 생성 할 수 있음
* Simulator 를 사용하여 설정한 IAM Role/policy에 대한 테스트가 가능
[ AWS EC2 Instance Metadata ]
CLI 에서 curl http://169.254.169.254/latest/meta-data 을 통해 메타데이터 정보를 가져올 수 있음
- AWS EC2 Instance Metadata is powerful but one of the least known features to developers
- It allows AWS EC2 instances to "learn about themselves" without using an IAM Role for the purpose
- The URL is http://169.254.169.254/latest/meta-data
- You can retrieve the IAM Role name from the metadata, but you cannot retrieve the IAM Policy
Metadata = Info about the EC2 instance
Userdata = launch script of the EC2 instance
ex) 1. curl http://169.254.169.254/latest/meta-data/hostname
2. curl http://169.254.169.254/latest/meta-data/iam/security-credentials/{EC2RoleName}
[ AWS SDK ]
- What if you want to perform actions on AWS directly from your applications code? (without using CLI)
- You can use an SDK (software development kit)
- Official SDKs are Java/.NET/Node.js/PHP/Python etc.
- We have to use the AWS SDK when coding against AWS Services such as DynamoDB
- AWS CLI uses the Python SDK(boto3)
* If you don't specify or configure a default region, then us-east-1 will be chosen by deafult
- It's recommend to use the default credential provider chain
- The default credential provider chain works seamlessly with:
AWS credentials at ~/.aws/credentials (only on our computers or on premise)
Instance Profile Credentials using IAM Roles (for EC2 machines, etc..)
Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
- Overall, Never Ever Store AWS Credentials in your code.
# Exponential Backoff
- Any API that fails because of too many calls needs to be retried with Exponential Backoff
- These apply to rate limited API
- Retry mechanism included in SDK API calls
'infra & cloud > AWS' 카테고리의 다른 글
[AWS] 9-2. S3 Access Logs, S3 Replication (0) | 2021.04.04 |
---|---|
[AWS] 9-1. S3 MFA Delete (0) | 2021.04.03 |
[AWS] 7-3. S3 Websites : CORS, Eventual Consistency, Strong Consistency (0) | 2021.04.01 |
[AWS] 7-2. S3 Security (0) | 2021.03.29 |
[AWS] 7-1. Amazon S3, S3 Encryption (0) | 2021.03.29 |