하드코딩된 데이터베이스 자격 증명을 다음으로 이동 AWS Secrets Manager - AWS Secrets Manager

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

하드코딩된 데이터베이스 자격 증명을 다음으로 이동 AWS Secrets Manager

코드에 일반 텍스트 데이터베이스 보안 인증 정보가 있는 경우 보안 인증 정보를 Secrets Manager로 이동한 다음 즉시 교체하는 것이 좋습니다. 보안 인증 정보를 Secrets Manager로 이동하면 코드를 보는 모든 사용자가 보안 인증 정보를 볼 수 있는 문제가 해결됩니다. 앞으로는 코드가 Secrets Manager에서 직접 보안 인증 정보를 검색하기 때문입니다. 보안 암호를 교체하면 암호가 업데이트된 다음 현재의 하드 코딩된 암호가 취소되어 더 이상 유효하지 않게 됩니다.

Amazon RDS, Amazon Redshift, Amazon DocumentDB 데이터베이스의 경우, 이 페이지에 제시된 단계를 사용하여 하드 코딩된 보안 인증 정보를 Secrets Manager로 이동합니다. 다른 유형의 보안 인증 정보 및 다른 보안 암호에 대해서는 하드 코딩된 보안 암호를 AWS Secrets Manager로 이동 섹션을 참조하세요.

시작하기 전에 보안 암호에 액세스해야 하는 사용자를 결정해야 합니다. 다음과 같이 두 개의 IAM 역할을 사용하여 보안 암호에 대한 권한을 관리하는 것이 좋습니다.

  • 조직의 보안 암호를 관리하는 역할. 자세한 정보는 Secrets Manager 관리자 권한 섹션을 참조하세요. 이 역할을 사용하여 보안 암호를 생성하고 교체합니다.

  • 이 자습서에서는 런타임 시 자격 증명을 사용할 수 있는 역할을 RoleToRetrieveSecretAtRuntime설명합니다. 코드가 이 역할을 수임하여 보안 암호를 검색합니다.

1단계: 보안 암호 생성

첫 번째 단계는 기존의 하드 코딩된 보안 인증 정보를 Secrets Manager의 보안 암호로 복사하는 것입니다. 지연 시간을 최소화하려면 보안 암호를 데이터베이스와 동일한 리전에 저장합니다.

보안 암호 생성
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. Store a new secret(새 보안 암호 저장)을 선택합니다.

  3. 보안 암호 유형 선택(Choose secret type) 페이지에서 다음을 수행합니다.

    1. 보안 암호 유형(Secret type)에서 저장할 데이터베이스 보안 인증 정보 유형을 선택합니다.

      • Amazon RDS 데이터베이스

      • Amazon DocumentDB 데이터베이스

      • 아마존 Redshift 데이터 웨어하우스.

      • 다른 유형의 보안 암호에 대해서는 하드 코딩된 보안 암호 대체를 참조하세요.

    2. 보안 인증 정보에서 데이터베이스에 대한 기존의 하드 코딩된 보안 인증 정보를 입력합니다.

    3. 암호화 키(Encryption key)에서 aws/secretsmanager를 선택하여 Secrets Manager에 대해 AWS 관리형 키 를 사용합니다. 이 키를 사용하는 데 드는 비용은 없습니다. 예를 들어 다른 AWS 계정에서 보안 암호에 액세스하기 위해 자체 고객 관리형 키를 사용할 수도 있습니다. 고객 관리형 키 사용 비용에 대한 자세한 내용은 요금을 참조하세요.

    4. 데이터베이스에서 데이터베이스(Database)를 선택합니다.

    5. Next(다음)를 선택합니다.

  4. 보안 구성(Configure secret) 페이지에서 다음을 수행합니다.

    1. 설명이 포함된 Secret name(보안 암호 이름)과 Description(설명)을 입력합니다.

    2. 리소스 권한(Resource permissions)에서 권한 편집(Edit permissions)을 선택합니다. 보안 검색을 허용하는 RoleToRetrieveSecretAtRuntime다음 정책을 붙여넣은 다음 [Save] 를 선택합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/RoleToRetrieveSecretAtRuntime" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
    3. 페이지 하단에서 다음(Next)을 선택합니다.

  5. 교체 구성(Configure rotation) 페이지에서 지금은 교체를 꺼 둡니다. 나중에 켜게 됩니다. 다음을 선택합니다.

  6. Review(검토) 페이지에서 보안 암호 세부 정보를 검토한 후 Store(저장)를 선택합니다.

2단계: 코드 업데이트

코드가 IAM 역할을 RoleToRetrieveSecretAtRuntime맡아야 암호를 검색할 수 있습니다. 자세한 내용은 IAM 역할 (AWS API) 로 전환을 참조하십시오.

그런 다음 Secrets Manager에서 제공하는 샘플 코드를 사용하여 Secrets Manager에서 보안 암호를 검색하도록 코드를 업데이트합니다.

샘플 코드 찾기
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. 보안 암호(Secrets) 페이지에서 보안 암호를 선택합니다.

  3. 아래로 스크롤하여 샘플 코드(Sample code)로 이동합니다. 언어를 선택한 다음 코드 조각을 복사합니다.

애플리케이션에서 하드 코딩된 보안 인증 정보를 제거하고 코드 조각을 붙여넣습니다. 코드 언어에 따라 코드 조각의 함수 또는 메서드에 호출을 추가해야 할 수 있습니다.

하드 코딩된 보안 인증 정보 대신 보안 암호를 사용하여 애플리케이션이 예상대로 작동하는지 테스트합니다.

3단계: 보안 암호 교체

마지막 단계는 보안 암호를 교체하여 하드 코딩된 보안 인증 정보를 취소하는 것입니다. 교체는 주기적으로 보안 암호를 업데이트하는 프로세스입니다. 보안 암호를 교체하면 보안 암호와 데이터베이스 모두에서 보안 인증 정보가 업데이트됩니다. Secrets Manager는 사용자가 설정한 일정에 따라 보안 암호를 자동으로 교체할 수 있습니다.

교체 설정의 일부는 Lambda 교체 함수가 Secrets Manager와 데이터베이스에 모두 액세스할 수 있도록 하는 것입니다. 자동 교체를 설정하면 Secrets Manager가 데이터베이스에 대한 네트워크 액세스 권한을 갖도록 데이터베이스와 동일한 VPC에 Lambda 교체 함수를 생성합니다. 또한 Lambda 교체 함수는 Secrets Manager를 호출하여 보안 암호를 업데이트할 수 있어야 합니다. Lambda에서 Secrets Manager로의 호출이 인프라를 벗어나지 않도록 VPC에 Secrets Manager 엔드포인트를 생성하는 것이 좋습니다. AWS 지침은 AWS Secrets Manager VPC 엔드포인트 사용 섹션을 참조하세요.

교체 켜기
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. 보안 암호(Secrets) 페이지에서 보안 암호를 선택합니다.

  3. 보안 암호 세부 정보(Secret details) 페이지의 교체 구성(Rotation configuration) 섹션에서 교체 편집(Edit rotation)을 선택합니다.

  4. Edit rotation configuration(교체 구성 편집) 대화 상자에서 다음을 수행합니다.

    1. Automatic rotation(자동 교체)을 켭니다.

    2. 교체 일정(Rotation schedule)에서 UTC 표준 시간대로 일정을 입력합니다.

    3. 변경 사항을 저장할 때 보안 암호가 교체되게 하려면 보안 암호를 저장할 때 즉시 교체(Rotate immediately when the secret is stored)를 선택합니다.

    4. 교체 함수(Rotation function)에서 새 Lambda 함수 생성(Create a new Lambda function)을 선택하고 새 함수의 이름을 입력합니다. Secrets Manager에서 함수 이름의 시작 부분에 "SecretsManager"를 추가합니다.

    5. 교체 전략에서 단일 사용자를 선택합니다.

    6. 저장(Save)을 선택합니다.

보안 암호가 교체되었는지 확인
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. 보안 암호(Secrets)를 선택한 다음 보안 암호를 선택합니다.

  3. 보안 암호 세부 정보(Secret details) 페이지를 아래로 스크롤하고 보안 암호 값 검색(Retrieve secret value)을 선택합니다.

    보안 암호 값이 변경되었으면 교체가 성공한 것입니다. 암호 값이 변경되지 않은 경우에는 CloudWatch 로그에서 교체 문제 해결 순환 함수를 확인해야 합니다.

교체된 보안 암호로 애플리케이션이 예상대로 작동하는지 테스트합니다.

다음 단계

코드에서 하드 코딩된 보안 암호를 제거한 후에는 다음과 같은 몇 가지 아이디어를 고려해 볼 수 있습니다.