BLOG

AWS Secrets Manager을 사용하여 자격증명을 안전하게 저장, 배포 및 변경하기
작성일: 2018-04-27

오늘 API 또는 AWS CLI(Command Line Interface)를 통해 보안 정보를 쉽게 저장 및 검색하고, 내장형 또는 사용자 지정 AWS Lambda 기능을 사용하여 자격 증명을 변경시킬 수 있는 AWS Secrets Manager를 런칭합니다. 데이터베이스 인증 정보, 암호 또는 API 키와 같은 응용 프로그램 보안정보를 관리하는 것은 한 시스템과 한 응용 프로그램으로 로컬에서 작업할 때 쉽습니다. 여러분이 많은 배포된 마이크로 서비스로 확장함에 따라, 보안정보를 안전하게 저장, 배포, 변경하는 것은 힘겨운 일이 되어 가고 있습니다. 이전에는 비용이 발생할 수 있고 시스템에 불필요한 복잡성을 유발할 수 있는 기밀 관리만을 위해 추가 인프라를 프로비저닝하고 유지해야 했습니다.

 

 

AWS Secrets Manager

 

 

트위터에서 오는 트윗을 모아 Amazon Aurora 데이터베이스에 저장하는 애플리케이션을 갖고 있다고 생각해 보세요. 이전에는 데이터베이스 관리자에게 사용자 이름과 암호를 요청하여 환경 변수에 포함시키거나, 애플리케이션 자체에 포함시켜야 했습니다. 이러한 사용자 이름과 암호는 물론 소셜 미디어 관리자 API도 저장해야 합니다. 소셜 미디어 관리자가 Twitter API 자격 증명을 생성하고 자격 증명을 저장하는 방법을 파악해야 했습니다. 이 프로세스는 여러 사람이 관련되어 있으며, 이 인증 정보를 변경시켜야 할 때마다 재시작해야 하는 매우 수동적인 프로세스입니다. Secrets Manager를 사용하여 데이터베이스 관리자는 보안 관리자의 자격 증명을 한번만 제공하면 되고 Lambda 기능이 제공된 Secrets Manager를 통해 이러한 자격 증명을 자동으로 업데이트 및 변경시킬 수 있습니다. 소셜 미디어 관리자는 간단한 API 호출로 액세스 할 수 있는 Secrets Manager에 Twitter API키를 저장할 수 있고, 사용자 정의 Lambda 기능을 사용하여 프로그래밍 방식으로도 변경할 수 있습니다. 보안정보는 선택한 KMS키로 암호화되며, 각 관리자는 개별 역할에 대해 세밀한 IAM 정책을 사용하여 이러한 보안정보에 대한 액세스를 명시적으로 부여할 수 있습니다.

 

AWS Secrets Manager 콘솔을 사용하여 보안정보를 저장하는 방법을 살펴보겠습니다. 먼저 새 보안 마법사에 액세스 하려면 새 보안정보 저장을 클릭합니다. RDS Aurora 인스턴스의 경우 단순히 인스턴스를 선택하고 데이터베이스에 연결하기 위한 초기 사용자 이름과 암호를 제공하기만 하면 됩니다.

 

 

다음으로, 보안정보에 접근하기 위해 간단한 설명과 이름을 쓸 것입니다. 여기에서는 원하는 이름 지정 체계를 모두 사용할 수 있습니다.

 

 

다음으로, 10일에 한번씩 비밀 번호를 변경시키는 보안정보 관리 기능이 있는 Lambda 기능을 사용하여 변경을 구성합니다.

 

 

마지막으로, 우리는 모든 세부 사항을 검토하고 보안정보를 저장하고 검색하기 위한 샘플 코드를 확인할 것입니다!

 

 

마지막으로 콘솔에 있는 비밀을 검토할 수 있습니다.

 

 

만약 내가 이런 보안정보에 접근해야 한다면, API라고 부릅니다.

 

import json

import boto3

secrets = boto3.client(“secretsmanager”)

rds = json.dumps(secrets.get_secrets_value(“prod/TwitterApp/Database”)[‘SecretString’])

print(rds)

 

그러면 다음과 같은 값이 나옵니다.

 

{‘engine’: ‘mysql’,

 ‘host’: ‘twitterapp2.abcdefg.us-east-1.rds.amazonaws.com’,

 ‘password’: ‘-)Kw>THISISAFAKEPASSWORD:lg{&sad+Canr’,

 ‘port’: 3306,

 ‘username’: ‘ranman’}

 

암호 이상의 기능

AWS Secrets Manager는 암호 이상의 기능을 수행합니다. OAuth 인증 정보, 이진 데이터 등을 저장할 수 있습니다. 트위터 OAuth 응용 키를 저장할 수 있는지 알아봅시다.

 

 

이제 우리가 자격 증명을 변경해야 할 때마다 트위터에 호출할 수 있는 사용자 지정 AWS Lambda 기능을 사용하여 이러한 제3자 OAuth 자격 증명의 변경을 정의할 수 있습니다.

 

 

사용자 정의 변경

 

AWS Secrets Manager의 가장 좋은 기능 중 하나는 자격 증명 변경을 위한 사용자 지정 AWS Lambda 기능입니다. 그러면 인증 정보에 대한 완전한 사용자 정의 워크플로를 정의할 수 있습니다. Secrets Manager는 사용자가 속한 변경의 단계를 지정하는 Step, 어떤 정보를 변경할지 지정하는 SecretId, 중요하게 기본적인 보안정보에 대한 모든 변화에 동일성을 보장하기 위해 사용되는 ClientRequestToken이 포함된 페이로드가 있는 Lambda를 호출합니다.

 

보안정보를 변경시킬 때는 몇 가지 다른 단계를 거쳐야 합니다.

 

  1. createSecret
  2. setSecret
  3. testSecret
  4. finishSecret

 

이러한 단계의 장점은 변경시 각 단계에 대해 원하는 종류의 승인 단계를 추가할 수 있다는 점입니다. 사용자 지정 변경에 대한 자세한 내용은 설명서를 참조하십시오.

 

지금 사용 가능합니다.

 

AWS Secrets Manager는 현재 미국 동부(북 버지니아), 미국 동부(오하이오), 미국 서부(북 캘리포니아), 미국 서부(오리건), 아시아 태평양(뭄바이), 아시아 태평양(서울), 아시아 태평양(싱가폴), 아시아 태평양(시드니), 아시아 태평양(도쿄), 캐나다, EU(푸랑크푸르트), EU(아일랜드), EU(런던), 남아메리카(상파울로)에서 사용할 수 있습니다. Secrets은 한 달에 보안정보당 0.40달러이고 10,000 API 호출당 0.05달러입니다. 더 많은 사용자가 애플리케이션 보안을 위해 자격 증명 변경을 채택하기를 고대합니다!

 

원문 URL: https://aws.amazon.com/ko/blogs/aws/aws-secrets-manager-store-distribute-and-rotate-credentials-securely/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.