isPowerfulBlog
[AWS] Secrets manager로 AWS 리소스 접근하기, AWS CLI 본문
1. AWS CLI 용 액세스 키 생성
사용자 > 보안자격증명 > 액세스 키 > 액세스 키 만들기
에서 AWS CLI용 액세스 키를 생성한다.
- 다양한 옵션이 있다. 나는 로컬 코드용 Access key를 이전에 발급 받아두었는데, 이걸 코드에서 사용하기 위해서 AWS CLI용 액세스 키를 또 발급 받는거다!
- 나중에 ec2 배포할 때에는 AWS 컴퓨팅 서비스에서 실행되는 애플리케이션 옵션으로 발급 다시 받아야겠다.
2. AWS CLI 설치
CLI에서 aws리소스에 접근할 수 있도록 하기 위해서 아래 방법으로 AWS CLI를 설치한다.
AWS CLI 설치
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
3. AWS CLI 설정
cli에서 액세스 권한 설정을 위해 다음과 같은 config 설정을 해준다.
$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
- AWS Access Key ID랑 AWS Secret Access Key는 아까 발급 받은 CLI용 Key를 입력하면 된다.
- output format은 안 적어도 된다
$cat ~/.aws/credentials
[default]
aws_access_key_id = A.................
aws_secret_access_key = r......................
- 입력 잘 했나 체크하고,
$ aws sts get-caller-identity
{
"UserId": "A.................",
"Account": "0...............",
"Arn": "arn:aws:iam::.........:user/user_name"
}
- account 연결이 잘 되었나 체크한다.
이제 시크릿 매니저 사용할 준비는 완료!
4. AWS Secrets Manager 새 보안암호 생성
로컬 API키 저장 옵션으로 선택하고,
이전에 발급받았던 로컬코드용 AWS ACCESS KEY를 입력한다.
이후 이름 설정 외에 별다른 옵션없이 생성해주면 된다.
5. 코드에 연결
생성 제일 마지막 페이지에서 아래처럼 샘플 코드를 제공해준다. 정말 그대로 복사해서 붙여넣기 하면된다.!!
나는 아래처럼 리턴해주는 부분만 추가해서 사용했다.
def get_aws_access_key():
secret_name = "..."
region_name = "..."
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
try:
get_secret_value_response = client.get_secret_value(
SecretId=secret_name
)
except ClientError as e:
raise e
secret = get_secret_value_response['SecretString']
return secret
비고
이전에 팀원들과 front, back, ml integration test를 진행할 때, 각자 api key를 저장해놓은 env파일을 주고받아야했던 귀찮음이 있었다. (깃허브에서 공유할 수가 없으니ㅠㅠ)
파트별로 개발 언어가 다르다보니 저장 형태도 제각각이었다.
이거 참 귀찮고 문제다 싶어서 찾은 대안이 시크릿 매니저였다.
내가 느낀 시크릿매니저 장점
- 모든 security key값을 한 곳에서 관리할 수 있다.
- 개발 언어와 프레임워크가 모두 달라도 security key값 사용 방식 만큼은 통일이 가능하다.
- integration test를 위해서 security key들을 따로 주고 받을 필요가 없다!
- 보안 이슈가 없어진 env파일들은 이제 github에서 공유도 가능해졌다.
- 정말 정말 편하다
'Infra' 카테고리의 다른 글
[Docker] Dockerfile, 이미지 빌드 및 컨테이너 실행 (1) | 2024.03.24 |
---|---|
[Cloud] VPC, VPN이란? (0) | 2024.01.16 |
[Knative] kind로 knative 클러스터 구축하기 | Ubuntu 22.04 (0) | 2023.06.23 |
[Kubernetes] Knative란? (0) | 2023.06.04 |
[Kubernetes] Kubernetes Tutorial for Beginners 정리(1) (0) | 2023.06.03 |