매개 변수 저장소 매개 변수에서 AWS Secrets Manager 암호 참조 - AWS Systems Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

매개 변수 저장소 매개 변수에서 AWS Secrets Manager 암호 참조

AWS Secrets Manager 를 사용하면 자격 증명, 암호 및 라이선스 키 등과 같이 중요한 구성 데이터를 정리 및 관리할 수 있습니다. AWS Systems Manager 의 기능인 파라미터 스토어는 Secrets Manager 자와 통합되어 파라미터 스토어 파라미터에 대한 참조를 이미 지원하는 다른 AWS 서비스를 사용하는 경우 암호 관리자 암호를 가져올 수 있습니다. 이러한 서비스에는 Amazon Elastic Compute Cloud (Amazon EC2), 아마존 Elastic Container Service (Amazon ECS), AWS Lambda, AWS CloudFormation, AWS CodeBuild, AWS CodeDeploy 뿐만 아니라 기타 Systems Manager 기능이 포함됩니다. Parameter Store를 사용하여 Secrets Manager 암호를 참조하면 코드 및 구성 스크립트에서 일관성 있고 안전하게 암호 및 참조 데이터를 호출하고 사용할 수 있는 프로세스가 마련됩니다.

Secrets Manager 대한 자세한 내용은 단원을 참조하세요.AWS Secrets Manager란 무엇입니까?AWS Secrets Manager 사용 설명서:.

Restrictions

매개 변수 저장소를 사용하여 Secrets Manager 참조할 때는 다음과 같은 제한 사항이 있습니다.

  • Secrets Manager 사용 하 여 검색할 수 있는GetParameterGetParametersAPI 작업. 와 같은 API 작업 및 고급 쿼리DescribeParametersGetParametersByPath, Secrets Manager 대해 지원 되지 않습니다.

  • AWS Command Line Interface (AWS CLI), Windows PowerShell 용 AWS 도구 및 SDK를 사용하여 파라미터 저장소를 사용하여 암호를 검색할 수 있습니다.

  • 파라미터 저장소에서 Secrets Manager 암호를 검색할 때 이름은 반드시 예약된 경로인 /aws/reference/secretsmanager/ 로 시작되어야 합니다.secret_ID_in_Secrets_Manager.

    단순 예시: /aws/reference/secretsmanager/CFCreds1

  • 파라미터 저장소는 보안 Secrets Manager 에 연결된 AWS Identity and Access Management (IAM) 정책을 준수합니다. 예를 들어 사용자 1에게 암호 A에 대한 액세스 권한이 없으면 사용자 1은 파라미터 저장소를 사용하여 암호 A를 검색할 수 없습니다.

  • Secrets Manager 참조하는 파라미터는 파라미터 스토어 버전 관리 기능이나 기록 기능을 사용할 수 없습니다.

  • 매개 변수 저장소는 Secrets Manager 버전 단계를 따릅니다. 버전 단계를 참조할 때는 문자, 숫자, 마침표(.), 하이픈(-) 또는 밑줄(_)만 사용할 수 있습니다. 버전 단계에 그 밖의 모든 기호를 지정하면 참조가 실패하게 됩니다.

파라미터 스토어를 사용하여 Secrets Manager 암호를 참조하는 방법

다음 절차에서는 파라미터 저장소 API를 사용하여 Secrets Manager 암호를 참조하는 방법을 설명합니다. 이 프로시저는 의 다른 절차를 참조합니다.AWS Secrets Manager 사용 설명서:.

참고

시작하기 전에 파라미터 저장소 파라미터에서 Secrets Manager 참조할 권한이 있는지 확인하십시오. 암호 관리자 및 Systems Manager 관리자 권한이 있으면 파라미터 저장소 API를 사용하여 암호를 검색할 수 있습니다. 파라미터 스토어 파라미터에서 Secrets Manager 암호를 참조했는데 그 암호에 액세스할 권한이 없으면 참조가 실패합니다. 자세한 내용은 단원을 참조하십시오.AWS Secrets Manager 대한 인증 및 액세스 제어AWS Secrets Manager 사용 설명서:.

중요

매개 변수 저장소는 암호 Secrets Manager 참조하기 위한 패스스루 서비스로 작동합니다. 파라미터 스토어는 암호에 대한 데이터나 메타데이터를 보존하지 않습니다. 참조는 상태 비저장입니다.

매개 변수 저장소를 사용하여 Secrets Manager 암호를 참조하려면

  1. Secrets Manager 에서 암호를 생성합니다. 자세한 정보는 AWS Secrets Manager로 암호 생성 및 관리를 참조하십시오.

  2. AWS CLI, Windows PowerShell 용 AWS 도구 또는 SDK를 사용하여 암호를 참조합니다. 암호 Secrets Manager 참조할 때는 이름이 예약된 경로로 시작해야 합니다. /aws/reference/secretsmanager/. 이 경로를 지정하면 시스템 관리자가 파라미터 저장소 대신 암호 관리자에서 Secrets Manager 검색해야 한다는 것을 에서 알게 됩니다. 다음은 매개 변수 저장소를 사용하여 Secrets Manager 올바르게 참조하는 몇 가지 예입니다.

    • /aws/reference/secretsmanager/CFCreds1

    • /aws/reference/secretsmanager/DBPass

    다음은 보안 Secrets Manager 저장된 액세스 키와 보안 키를 참조하는 Java 코드 예제입니다. 이 코드 예제는 Amazon DynamoDB 클라이언트를 설정합니다. 이 코드는 파라미터 스토어에서 구성 데이터와 자격 증명을 검색합니다. 구성 데이터는 파라미터 저장소에 문자열 파라미터로 저장되고, 자격 증명은 Secrets Manager 저장됩니다. 구성 데이터와 자격 증명이 별도의 서비스에 저장되지만 두 데이터 세트 모두 파라미터 저장소에서GetParameterAPI.

    /** * Initialize System 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 DDB Client with different credentials final AmazonDynamoDB client = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds)) .withRegion(getParameter("region")) //Getting config from Parameter Store .build(); return client; } /** * Helper method to retrieve SSM Parameter's value * @param parameterName identifier of the SSM 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 CLI 예 1: 암호의 이름을 사용하여 참조

    Linux & macOS
    aws ssm get-parameter \ --name /aws/reference/secretsmanager/s1-secret \ --with-decryption
    Windows
    aws ssm get-parameter ^ --name /aws/reference/secretsmanager/s1-secret ^ --with-decryption

    명령은 다음과 같은 정보를 반환합니다.

    {
        "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를 포함하는 참조

    Linux & macOS
    aws ssm get-parameter \ --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 \ --with-decryption
    Windows
    aws ssm get-parameter ^ --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 ^ --with-decryption

    명령은 다음과 같은 정보를 반환합니다.

    {
        "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: 버전 단계를 포함하는 참조

    Linux & macOS
    aws ssm get-parameter \ --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT \ --with-decryption
    Windows
    aws ssm get-parameter ^ --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT ^ --with-decryption

    명령은 다음과 같은 정보를 반환합니다.

    {
        "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",
    }