Parameter Store 파라미터에서 AWS Secrets Manager 암호 참조
AWS Secrets Manager을(를) 사용하면 자격 증명, 암호 및 라이선스 키 등과 같이 중요한 구성 데이터를 정리 및 관리할 수 있습니다. AWS Systems Manager의 기능인 Parameter Store은(는) 이제 Secrets Manager에 통합되어 Parameter Store 파라미터에 대한 참조를 이미 지원하는 다른 AWS 서비스을(를) 사용하는 경우 Secrets Manager 암호를 가져올 수 있습니다. 이러한 서비스에는 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Elastic Container Service(Amazon ECS), AWS Lambda, AWS CloudFormation, AWS CodeBuild, AWS CodeDeploy 및 기타 Systems Manager 기능이 포함됩니다. Parameter Store를 통해 Secrets Manager 암호를 참조하면 코드 및 구성 스크립트에서 일관성 있고 안전하게 암호 및 참조 데이터를 호출하고 사용할 수 있는 프로세스가 마련됩니다.
Secrets Manager에 대한 자세한 내용은 AWS Secrets Manager User Guide의 What Is AWS Secrets Manager?를 참조하세요.
제한 사항
Parameter Store를 사용하여 Secrets Manager 암호를 참조할 때는 다음과 같은 제한 사항이 있습니다.
-
GetParameter 및 GetParameters API 작업을 사용하여 Secrets Manager 보안 암호만 검색할 수 있습니다. DescribeParameters, GetParametersByPath 등의 고급 쿼리 API 작업과 수정 작업은 Secrets Manager에 사용할 수 없습니다.
-
AWS Command Line Interface(AWS CLI), AWS Tools for Windows PowerShell 및 SDK에서 Parameter Store를 사용하여 암호를 검색할 수 있습니다.
-
Parameter Store의 Secrets Manager 시크릿의 접두사는
/aws/reference/secretsmanager
이어야 합니다. 예를 들어, 다음과 같습니다./aws/reference/secretsmanager/CFCreds1
/aws/reference/secretsmanager/myapp/db/password
-
Parameter Store는 Secrets Manager 보안 암호에 연결된 AWS Identity and Access Management(IAM) 정책을 준수합니다. 예를 들어 사용자 1에게 암호 A에 대한 액세스 권한이 없으면 사용자 1은 Parameter Store를 사용하여 암호 A를 검색할 수 없습니다.
-
Secrets Manager 암호를 참조하는 파라미터는 Parameter Store의 버전 관리 기능이나 기록 기능을 사용할 수 없습니다.
-
Parameter Store는 Secrets Manager 버전 단계를 준수합니다. 버전 단계를 참조할 때는 문자, 숫자, 마침표(.), 하이픈(-) 또는 밑줄(_)을 사용합니다. 버전 단계에 그 밖의 모든 기호를 지정하면 참조가 실패하게 됩니다.
Parameter Store를 사용하여 Secrets Manager 보안 암호를 참조하는 방법
다음 절차에서는 Parameter Store API를 사용하여 Secrets Manager 암호를 참조하는 방법을 설명합니다. 여기서는 AWS Secrets Manager User Guide의 다른 절차를 참조합니다.
참고
시작하기 전에 Parameter Store 파라미터에서 Secrets Manager 암호를 참조할 권한이 있는지 확인합니다. Secrets Manager 및 Systems Manager에서 관리자 권한이 있는 경우 Parameter Store API를 사용하여 보안 암호를 참조하거나 검색할 수 있습니다. Parameter Store 파라미터에 Secrets Manager 암호를 참조했는데 그 암호에 액세스할 권한이 없으면 참조가 실패합니다. 자세한 내용은 AWS Secrets Manager User Guide의 Authentication and access control for AWS Secrets Manager를 참조하세요.
중요
Parameter Store는 Secrets Manager 암호 참조를 위한 패스스루 서비스의 역할을 합니다. Parameter Store는 암호에 대한 데이터 또는 메타데이터를 보존하지 않습니다. 참조는 상태 비저장입니다.
Parameter Store를 사용하여 Secrets Manager 보안 암호를 참조하려면
-
Secrets Manager에서 보안 암호를 생성합니다. 자세한 내용은 AWS Secrets Manager로 암호 생성 및 관리를 참조하세요.
-
AWS CLI, AWS Tools for Windows PowerShell 또는 SDK를 사용하여 암호를 참조합니다. Secrets Manager 암호를 참조할 때는 이름이 예약된 경로인
/aws/reference/secretsmanager/
로 시작되어야 합니다. 이 경로를 지정하면 Parameter Store가 아니라 Secrets Manager에서 암호를 검색해야 한다는 것을 Systems Manager에서 알게 됩니다. 다음은 Parameter Store를 사용하여 Secrets Manager 보안 암호CFCreds1
및DBPass
를 올바르게 참조하는 몇 가지 예제 이름입니다.-
/aws/reference/secretsmanager/CFCreds1
-
/aws/reference/secretsmanager/DBPass
다음은 Secrets Manager에 저장된 액세스 키와 보안 키를 참조하는 Java 코드 예제입니다. 이 코드 예제는 Amazon DynamoDB 클라이언트를 설정합니다. 이 코드는 Parameter Store에서 구성 데이터와 자격 증명을 검색합니다. 구성 데이터는 Parameter Store에 문자열 파라미터로 저장되고, 자격 증명은 Secrets Manager에 저장됩니다. 구성 데이터와 자격 증명이 별도의 서비스에 저장되지만 두 데이터 집합 모두 Parameter Store에서
GetParameter
API를 사용하여 액세스할 수 있습니다./** * Initialize Systems Manager client with default credentials */ AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient(); ... /** * Example method to launch DynamoDB client with credentials different from default * @return DynamoDB client */ AmazonDynamoDB getDynamoDbClient() { //Getting AWS credentials from Secrets Manager using GetParameter BasicAWSCredentials differentAWSCreds = new BasicAWSCredentials( getParameter("/aws/reference/secretsmanager/
access-key
"), getParameter("/aws/reference/secretsmanager/secret-key
")); //Initialize the DynamoDB client with different credentials final AmazonDynamoDB client = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds)) .withRegion(getParameter("region")) //Getting configuration from Parameter Store .build(); return client; } /** * Helper method to retrieve parameter value * @param parameterName identifier of the parameter * @return decrypted parameter value */ public GetParameterResult getParameter(String parameterName) { GetParameterRequest request = new GetParameterRequest(); request.setName(parameterName); request.setWithDecryption(true); return ssm.newGetParameterCall().call(request).getParameter().getValue(); }여기 몇 가지 AWS CLI 예제가 있습니다.
aws secretsmanager list-secrets
명령을 사용하여 보안 암호의 이름을 찾습니다.AWS CLI 예제 1: 암호의 이름을 사용하여 참조
명령은 다음과 같은 정보를 반환합니다.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"aaabbbccc-1111-222-333-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", } }
AWS CLI 예제 2: 버전 ID를 포함하는 참조
명령은 다음과 같은 정보를 반환합니다.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"11111-aaa-bbb-ccc-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "Selector": ":11111-aaa-bbb-ccc-123456789" } "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", }
AWS CLI 예제 3: 버전 단계를 포함하는 참조
명령은 다음과 같은 정보를 반환합니다.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"11111-aaa-bbb-ccc-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "Selector": ":AWSCURRENT" } "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", }
-