Amazon Web Services 한국 블로그

AWS Secrets Manager, 자격 증명 보안 저장, 배포 및 교체 기능 제공

오늘 API 또는 AWS 명령줄 인터페이스를 통해 비밀을 쉽게 저장 및 검색하고 내장 또는 사용자 지정 AWS Lambda 함수로 자격 증명을 교체할 수 있게 해 주는 AWS Secrets Manager를 출시합니다. 하나의 컴퓨터와 하나의 애플리케이션만 사용할 때에는 데이터베이스 자격 증명, 암호 또는 API 키와 같은 애플리케이션 비밀의 관리가 어렵지 않습니다.

환경이 성장하고 분산된 마이크로서비스의 수가 점점 증가하면서 비밀을 저장, 배포, 교체 및 소비하는 작업은 갈수록 어려워집니다. 이전에는 고객이 비밀 관리 작업을 위한 전용 인프라를 추가적으로 프로비저닝하고 유지해야 했으며 이는 비용을 유발하고 시스템에 불필요한 복잡성을 추가했습니다.

AWS Secrets Manager

Twitter로부터 트윗을 수신하여 Amazon Aurora 데이터베이스에 저장하는 애플리케이션이 있다고 가정해 보겠습니다. 이전에는 데이터베이스 관리자에게 사용자 이름과 암호를 요청하고 이러한 자격 증명을 환경 변수에 포함시키거나 프로덕션을 위해 애플리케이션 자체에 포함시키기도 했습니다.

또한 소셜 미디어 관리자는 Twitter API 자격 증명을 생성하고 이러한 정보를 저장하는 방법을 찾아야 했습니다. 이는 여러 사람이 관여하는 상당히 수동적인 과정으로서 자격 증명을 교체할 때마다 시스템을 재시작해야 했습니다. Secrets Manager를 사용하면 데이터베이스 관리자가 Secrets Manager에서 한 번만 자격 증명을 제공하고 그 다음부터는 Secrets Manager에서 제공하는 Lambda 함수를 통해 자동으로 자격 증명을 업데이트 및 교체할 수 있습니다.

소셜 미디어 관리자는 Secrets Manager에 Twitter API 키를 저장해 두고 사용자는 간단한 API 호출로 이를 액세스할 수 있습니다. 또한 Twitter API를 호출하는 사용자 지정 Lambda 함수를 사용하여 프로그램적으로 자격 증명을 교체할 수도 있습니다. 비밀은 선택한 KMS 키로 계정에서 암호화되고 각 관리자는 세부적인 IAM 정책을 사용하여 개별 역할 또는 사용자에게 이러한 비밀에 대한 액세스 권한을 명시적으로 부여할 수 있습니다..

AWS Secrets Manager 콘솔을 사용하여 비밀을 저장하는 방법을 살펴보겠습니다. 먼저 Store a new secret(새 비밀 저장)을 클릭하여 새 비밀 마법사를 시작합니다. 이 RDS Aurora 인스턴스의 경우 간단히 인스턴스를 선택하고 데이터베이스에 연결할 최초 사용자 이름 및 암호를 제공하면 됩니다.

다음으로 간단한 설명과 비밀 액세스에 사용할 이름을 입력합니다. 여기에는 원하는 대로 아무 명명법이나 사용할 수 있습니다.

다음으로, Secrets Manager에서 제공하는 Lambda 함수를 사용하여 10일마다 암호를 교체하도록 교체 설정을 구성합니다.

마지막으로, 세부 정보를 검토하고 비밀을 저장 및 검색하는 샘플 코드를 확인합니다!

이제 콘솔에서 비밀을 검토할 수 있습니다.

이제 이러한 비밀을 액세스해야 하는 경우 간단히 API를 호출하면 됩니다.

import json
import boto3
secrets = boto3.client("secretsmanager")
rds = json(sm.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 자격 증명, 이진 데이터 등 다양한 비밀을 저장할 수 있습니다. Twitter OAuth 애플리케이션 키를 저장하는 과정을 살펴보겠습니다.

이제 자격 증명을 교체해야 할 때마다 Twitter를 호출하는 사용자 지정 AWS Lambda 함수를 사용하여 이러한 타사 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의 요금은 비밀 1개 당 월 $0.40 및 API 호출 10,000회 당 $0.05로 책정되어 있습니다. 다 많은 분들이 자격 증명 교체를 사용하여 애플리케이션 보안을 구현하시기 바랍니다!

Randall