Cloud9 Terminal에서 임시 자격증명을 사용하지 않도록 기존 자격 증명 파일을 제거합니다.
rm -vf ${HOME}/.aws/credentials
5. Cloud9 IDE 역할 점검
Cloud9 이 올바른 IAM 역할을 사용하고 있는지 확인합니다.
(앞서 선언한 IAM Role 이름을 "eksworkshop-admin"으로 선언하지 않은 경우에는 다른 이름으로 변경합니다.)
실제 Role의 Arn은 아래 명령을 통해 확인 할 수 있습니다.
aws sts get-caller-identity --region ap-northeast-2 --query Arn | grep eksworkshop-admin -q && echo "IAM role valid" || echo "IAM role NOT valid"
aws sts get-caller-identity --region ap-northeast-2
6. Shell 환경변수 저장
Account ID, Region 정보 등을 환경변수와 프로파일에 저장해 두고, EKSworkshop 에서 사용합니다.
# Account , Region 정보를 AWS Cli로 추출합니다.
export ACCOUNT_ID=$(aws sts get-caller-identity --region ap-northeast-2 --output text --query Account)
export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
echo $ACCOUNT_ID
echo $AWS_REGION
# bash_profile에 Account 정보, Region 정보를 저장합니다.
echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profile
echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bash_profile
aws configure set default.region ${AWS_REGION}
aws configure --profile default list
출력결과 예제는 아래와 같습니다.
whchoi98:~ $ aws configure --profile default list
Name Value Type Location
---- ----- ---- --------
profile default manual --profile
access_key ****************OF5M iam-role
secret_key ****************sDz7 iam-role
region ap-northeast-2 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
SSH 키 생성
eksworkshop에서 사용될 키를 생성합니다.
7.SSH Key 생성
Cloud9에서 ssh key를 생성합니다. 해당 키는 EKS Worker Node에서 사용될 키입니다.
cd ~/environment/
ssh-keygen
SSH Key name
eksworkshop
아래는 예제입니다.key 이름을 eksworkshop으로 생성하였습니다.
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): eksworkshop
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in eksworkshop.
Your public key has been saved in eksworkshop.pub.
The key fingerprint is:
SHA256:zAcvK4NFMkIaB4Vh507xv6LsYX/GMhXdb50TBZQasYE ec2-user@ip-172-31-41-2
The key's randomart image is:
+---[RSA 2048]----+
|+*+o .oooo |
|o=o o E .o. .|
|. .oo.. o . .o .|
| o. +.+ + .. . |
| . ..S o . . o|
| o ..+ o + |
| o..=.. . .|
| o +o.* |
| .+ .= |
+----[SHA256]——+
Cloud9 IDE Terminal 에서 이후 생성된 Workernode 또는 EC2에 접속하기 위해 pem key의 권한 설정을 해 둡니다.
cd ~/environment/
mv ./eksworkshop ./eksworkshop.pem
chmod 400 ./eksworkshop.pem
8.ssh key 전송
생성된 SSH Public key를 Region으로 전송합니다. 앞서 eksworkshop.pub 로 public key가 생성되었습니다.
(AWS CLI Version 2.0)
cd ~/environment/
# ap-northeast-2 로 전송합니다.
aws ec2 import-key-pair --key-name "eksworkshop" --public-key-material fileb://./eksworkshop.pub --region ap-northeast-2
# ap-northeast-1 으로 전송합니다.
aws ec2 import-key-pair --key-name "eksworkshop" --public-key-material fileb://./eksworkshop.pub --region ap-northeast-1
CMK 생성
9.KMS 소개
AWS KMS(Key Management Service)를 사용하면 손쉽게 암호화 키를 생성 및 관리하고 다양한 AWS 서비스와 애플리케이션에서의 사용을 제어할 수 있습니다. AWS KMS는 FIPS 140-2에 따라 검증되었거나 검증 과정에 있는 하드웨어 보안 모듈을 사용하여 키를 보호하는 안전하고 복원력 있는 서비스입니다. 또한, AWS KMS는 AWS CloudTrail과도 통합되어 모든 키 사용에 관한 로그를 제공함으로써 각종 규제 및 규정 준수 요구 사항을 충족할 수 있게 지원합니다.
EKS에서는 K8s와 Key를 통한 인증이 많이 일어납니다. 안전한 관리를 위해 Option으로 구성할 수 있습니다.
비밀 암호화(Secrets encryption)를 활성화하면 AWS Key Management Service(KMS) 키를 사용하여 클러스터의 etcd에 저장된 Kubernetes 비밀 봉투 암호화를 제공할 수 있습니다. 이 암호화는 EKS 클러스터의 일부로 etcd에 저장된 모든 데이터(비밀 포함)에 대해 기본적으로 활성화되는 EBS 볼륨 암호화에 추가됩니다.
EKS 클러스터에 비밀 암호화(Secrets encryption)를 사용하면 사용자가 정의하고 관리하는 KMS 키로 Kubernetes 비밀 암호화하여 Kubernetes 애플리케이션에 대한 심층 방어 전략을 배포할 수 있습니다.
10.CMK 생성
K8s Secret 암호화를 할 때, EKS 클러스터에서 사용할 CMK(Cusomter Management Key : 사용자 관리형 키)를 생성합니다.