Amazon Aurora 및 AWS Secrets Manager를 통한 암호 관리 - Amazon Aurora

Amazon Aurora 및 AWS Secrets Manager를 통한 암호 관리

Amazon Aurora는 Secrets Manager와 통합되어 DB 클러스터의 마스터 사용자 암호를 관리합니다.

리전 및 버전 사용 가능 여부

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전에 따라 다릅니다. 버전 및 Secrets Manager와 Amazon Aurora통합의 리전 가용성에 대한 자세한 내용은 Secrets Manager 통합을 지원하는 리전 및 Aurora DB 엔진을 참조하세요.

Secrets Manager와 Amazon Aurora 통합에 대한 제한 사항

다음 기능에서는 Secrets Manager를 사용한 마스터 사용자 암호 관리가 지원되지 않습니다.

  • Amazon RDS 블루/그린 배포

  • Aurora 글로벌 데이터베이스의 일부인 DB 클러스터

  • Aurora Serverless v1 DB 클러스터

  • Aurora MySQL 리전 간 읽기 전용 복제본

AWS Secrets Manager를 통한 마스터 사용자 암호 관리 개요

AWS Secrets Manager를 사용하면 데이터베이스 암호를 포함한 하드 코딩된 보안 인증 정보를 Secrets Manager에서 프로그래밍 방식으로 비밀을 검색하게 하는 API 호출로 바꿀 수 있습니다. Secrets Manager 사용에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서를 참조하세요.

Secrets Manager에 데이터베이스 암호를 저장하면 AWS 계정에서 요금을 부과합니다. 요금에 대한 자세한 내용은 AWS Secrets Manager 요금을 참조하십시오.

다음 작업 중 하나를 수행할 때 Aurora가 Secrets Manager에서 Amazon Aurora DB 클러스터의 마스터 사용자 암호를 관리하도록 지정할 수 있습니다.

  • DB 클러스터 생성

  • DB 클러스터 수정

  • Amazon S3에서 DB 클러스터 복원(Aurora MySQL만 해당)

Aurora가 Secrets Manager에서 마스터 사용자 암호를 관리하도록 지정하면 Aurora가 암호를 생성하여 Secrets Manager에 저장합니다. 암호와 직접 상호 작용하여 마스터 사용자의 보안 인증 정보를 검색할 수 있습니다. 고객 관리 키를 지정하여 암호를 암호화하거나 Secrets Manager에서 제공하는 KMS 키를 사용할 수도 있습니다.

Aurora는 비밀 설정을 관리하고 기본적으로 7일마다 비밀을 교체합니다. 교체 일정 같은 일부 설정을 수정할 수 있습니다. Secrets Manager에서 암호를 관리하는 DB 클러스터를 삭제하면 암호 및 관련 메타데이터도 삭제됩니다.

비밀의 보안 인증 정보를 사용하여 DB 클러스터에 연결하려면 Secrets Manager에서 비밀을 검색하면 됩니다. 자세한 내용은 AWS Secrets Manager 사용 설명서AWS Secrets Manager에서 비밀 검색AWS Secrets Manager 비밀에 있는 보안 인증 정보를 사용하여 SQL 데이터베이스에 연결을 참조하세요.

Secrets Manager를 통한 마스터 사용자 암호 관리의 이점

Secrets Manager를 사용하여 Aurora 마스터 사용자 암호를 관리하면 다음과 같은 이점이 있습니다.

  • Aurora가 데이터베이스 보안 인증 정보를 자동으로 생성합니다.

  • Aurora가 데이터베이스 보안 인증 정보를 AWS Secrets Manager에 자동으로 저장하고 관리합니다.

  • 애플리케이션을 변경할 필요 없이 Aurora가 정기적으로 데이터베이스 보안 인증 정보를 교체합니다.

  • Secrets Manager가 사용자 액세스 및 일반 텍스트 보기로부터 데이터베이스 보안 인증 정보를 보호합니다.

  • Secrets Manager를 사용하면 데이터베이스 연결을 위한 비밀의 데이터베이스 보안 인증 정보를 검색할 수 있습니다.

  • Secrets Manager에서 IAM을 사용하여 비밀의 데이터베이스 보안 인증 정보에 대한 액세스를 세밀하게 제어할 수 있습니다.

  • 필요에 따라 다른 KMS 키를 사용하여 데이터베이스 암호화와 보안 인증 정보 암호화를 분리할 수 있습니다.

  • 데이터베이스 보안 인증 정보를 수동으로 관리하고 교체하지 않아도 됩니다.

  • AWS CloudTrail 및 Amazon CloudWatch를 사용하여 데이터베이스 보안 인증 정보를 쉽게 모니터링할 수 있습니다.

Secrets Manager의 이점에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서를 참조하세요.

Secrets Manager 통합에 필요한 권한

사용자는 Secrets Manager 통합과 관련된 작업을 수행하는 데 필요한 권한이 있어야 합니다. 사용자에게 필요한 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 부여하는 IAM 정책을 생성할 수 있습니다. 그런 다음 해당 권한이 필요한 IAM 권한 세트 또는 역할에 이러한 정책을 연결할 수 있습니다. 자세한 내용은 Amazon Aurora의 자격 증명 및 액세스 관리 단원을 참조하십시오.

생성, 수정 또는 복원 작업의 경우 Aurora가 Secrets Manager에서 마스터 사용자 암호를 관리하도록 지정하는 사용자는 다음 작업을 수행할 권한이 있어야 합니다.

  • kms:DescribeKey

  • secretsmanager:CreateSecret

  • secretsmanager:TagResource

생성, 수정 또는 복원 작업의 경우 Secrets Manager에서 비밀을 암호화하는 고객 관리형 키를 지정하는 사용자는 다음 작업을 수행할 권한이 있어야 합니다.

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:CreateGrant

수정 작업의 경우 Secrets Manager에서 마스터 사용자 암호를 교체하는 사용자는 다음 작업을 수행할 권한이 있어야 합니다.

  • secretsmanager:RotateSecret

AWS Secrets Manager 마스터 사용자 암호의 Aurora 관리 적용

IAM 조건 키를 사용하여 AWS Secrets Manager에서 마스터 사용자 암호의 Aurora 관리를 적용할 수 있습니다. 다음 정책은 Secrets Manager에서 Aurora가 마스터 사용자 암호를 관리하지 않는 한 사용자가 DB 인스턴스 또는 DB 클러스터를 생성하거나 복원하는 것을 허용하지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["rds:CreateDBInstance", "rds:CreateDBCluster", "rds:RestoreDBInstanceFromS3", "rds:RestoreDBClusterFromS3"], "Resource": "*", "Condition": { "Bool": { "rds:ManageMasterUserPassword": false } } } ] }
참고

이 정책은 생성 시 AWS Secrets Manager에서 암호 관리를 적용합니다. 그러나 클러스터를 수정하여 여전히 Secrets Manager 통합을 비활성화하고 마스터 암호를 수동으로 설정할 수 있습니다.

이를 방지하려면 정책의 Action 블록에 rds:ModifyDBInstance, rds:ModifyDBCluster를 포함하세요. 이렇게 하면 사용자가 Secrets Manager 통합이 활성화되지 않은 기존 클러스터에 추가 수정 사항을 적용할 수 없습니다.

IAM 정책에서 조건 키 사용에 관한 자세한 내용은 Aurora의 정책 조건 키정책 예: 조건 키 사용을 참조하세요.

Secrets Manager를 사용하여 DB 클러스터의 마스터 사용자 암호 관리

다음 작업을 수행할 때 Secrets Manager에서 마스터 사용자 암호의 Aurora 관리를 구성할 수 있습니다.

콘솔, AWS CLI 또는 RDS API를 사용하여 이러한 작업을 수행할 수 있습니다.

다음 지침에 따라 RDS 콘솔을 사용하여 DB 클러스터를 생성하거나 수정합니다.

RDS 콘솔을 사용하여 이러한 작업 중 하나를 수행하는 경우 Secrets Manager에서 Aurora가 마스터 사용자 암호를 관리하도록 지정할 수 있습니다. DB 클러스터를 생성 또는 복원할 때 이를 수행하려면 Credential settings(보안 인증 정보 설정)에서 Manage master credentials in AWS Secrets Manager를 선택합니다. DB 클러스터를 수정할 경우 Settings(설정)에서 Manage master credentials in AWS Secrets Manager를 선택합니다.

다음 이미지는 DB 클러스터를 생성 또는 복원할 때의 Manage master credentials in AWS Secrets Manager 설정의 예입니다.

AWS Secrets Manager에서 마스터 보안 인증 정보 관리

이 옵션을 선택하면 Aurora가 Secrets Manager에서 마스터 사용자 암호를 생성하고 수명 주기 동안 이를 관리합니다.

AWS Secrets Manager에서 마스터 보안 인증 정보 관리 선택됨

Secrets Manager가 제공하는 KMS 키 또는 사용자가 생성한 고객 관리 키를 사용하여 비밀을 암호화하도록 선택할 수 있습니다. Aurora가 DB 클러스터의 데이터베이스 보안 인증 정보를 관리한 후에는 비밀을 암호화하는 데 사용되는 KMS 키를 변경할 수 없습니다.

요구 사항에 맞는 다른 설정을 선택할 수 있습니다.

DB 클러스터를 생성할 때 사용 가능한 설정에 대한 자세한 내용은 Aurora DB 클러스터 설정을 참조하세요. DB 클러스터를 수정할 때 사용 가능한 설정에 대한 자세한 내용은 Amazon Aurora에 대한 설정을 참조하세요.

Aurora가 Secrets Manager에서 마스터 사용자 암호를 관리하도록 지정하려면 다음 명령 중 하나에서 --manage-master-user-password 옵션을 지정하세요.

이러한 명령에서 --manage-master-user-password 옵션을 지정하면 Aurora가 Secrets Manager에서 마스터 사용자 암호를 생성하고 해당 수명 주기 동안 이를 관리합니다.

비밀을 암호화하려면 고객 관리형 키를 지정하거나 Secrets Manager에서 제공하는 기본 KMS 키를 사용하면 됩니다. 고객 관리형 키를 지정하려면 --master-user-secret-kms-key-id 옵션을 사용하세요. AWS KMS 키 식별자는 KMS 키의 키 ARN, 키 ID, 별칭 ARN 또는 별칭 이름입니다. 다른 AWS 계정에서 KMS 키를 사용하려면 키 ARN 또는 별칭 ARN을 지정하세요. Aurora가 DB 클러스터의 데이터베이스 보안 인증 정보를 관리한 후에는 비밀을 암호화하는 데 사용되는 KMS 키를 변경할 수 없습니다.

요구 사항에 맞는 다른 설정을 선택할 수 있습니다.

DB 클러스터를 생성할 때 사용 가능한 설정에 대한 자세한 내용은 Aurora DB 클러스터 설정을 참조하세요. DB 클러스터를 수정할 때 사용 가능한 설정에 대한 자세한 내용은 Amazon Aurora에 대한 설정을 참조하세요.

이 예에서는 DB 클러스터를 생성하고 Aurora가 Secrets Manager에서 암호를 관리하도록 지정합니다. 비밀은 Secrets Manager에서 제공하는 KMS 키를 사용하여 암호화됩니다.

대상 LinuxmacOS, 또는Unix:

aws rds create-db-cluster \ --db-cluster-identifier sample-cluster \ --engine aurora-mysql \ --engine-version 8.0 \ --master-username admin \ --manage-master-user-password

Windows의 경우:

aws rds create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --engine aurora-mysql ^ --engine-version 8.0 ^ --master-username admin ^ --manage-master-user-password

Aurora가 Secrets Manager에서 마스터 사용자 암호를 관리하도록 지정하려면 다음 작업 중 하나에서 ManageMasterUserPassword 파라미터를 true로 설정하세요.

이러한 명령에서 ManageMasterUserPassword 파라미터를 true로 설정하면 Aurora가 Secrets Manager에서 마스터 사용자 암호를 생성하고 해당 수명 주기 동안 이를 관리합니다.

비밀을 암호화하려면 고객 관리형 키를 지정하거나 Secrets Manager에서 제공하는 기본 KMS 키를 사용하면 됩니다. MasterUserSecretKmsKeyId 파라미터를 사용하여 고객 관리형 키를 지정합니다. AWS KMS 키 식별자는 KMS 키의 키 ARN, 키 ID, 별칭 ARN 또는 별칭 이름입니다. 다른 AWS 계정에서 KMS 키를 사용하려면 키 ARN 또는 별칭 ARN을 지정하세요. Aurora가 DB 클러스터의 데이터베이스 보안 인증 정보를 관리한 후에는 비밀을 암호화하는 데 사용되는 KMS 키를 변경할 수 없습니다.

DB 클러스터의 마스터 사용자 암호 비밀 교체

Aurora가 마스터 사용자 암호 비밀을 교체하면 Secrets Manager는 기존 비밀의 새 비밀 버전을 생성합니다. 새 버전의 비밀에는 새 마스터 사용자 암호가 포함됩니다. Aurora는 새 비밀 버전의 암호와 일치하도록 DB 클러스터의 마스터 사용자 암호를 변경합니다.

예약된 교체를 기다리지 않고 비밀을 즉시 교체할 수 있습니다. Secrets Manager에서 마스터 사용자 암호 비밀을 교체하려면 DB 클러스터를 수정하세요. DB 클러스터 수정에 대한 자세한 내용은 Amazon Aurora DB 클러스터 수정을 참조하세요.

RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 마스터 사용자 암호 비밀을 즉시 교체할 수 있습니다. 새 암호는 항상 28자이며 하나 이상의 대문자와 소문자, 하나의 숫자, 하나의 구두점을 포함합니다.

RDS 콘솔을 사용하여 마스터 사용자 암호 비밀을 교체하려면 DB 클러스터를 수정하고 Settings(설정)에서 Rotate secret immediately(암호 즉시 교체)를 선택합니다.

마스터 사용자 암호 비밀 즉시 교체

RDS 콘솔을 사용하여 DB 클러스터를 수정하려면 콘솔, CLI, API를 사용하여 DB 클러스터 수정의 지침에 따르세요. 확인 페이지에서 Apply immediately(즉시 적용)를 선택해야 합니다.

AWS CLI를 사용하여 마스터 사용자 암호를 교체하려면 modify-db-cluster 명령을 사용하고 --rotate-master-user-password 옵션을 지정합니다. 마스터 암호를 교체할 때 --apply-immediately 옵션을 지정해야 합니다.

이 예에서는 마스터 사용자 암호 비밀을 교체합니다.

대상 LinuxmacOS, 또는Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --rotate-master-user-password \ --apply-immediately

Windows의 경우:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --rotate-master-user-password ^ --apply-immediately

ModifyDBCluster 작업을 사용하고 RotateMasterUserPassword 파라미터를 true로 설정하여 마스터 사용자 암호 비밀을 교체할 수 있습니다. 마스터 암호를 교체할 때 ApplyImmediately 파라미터를 true로 설정해야 합니다.

DB 클러스터의 비밀에 대한 세부 정보 보기

콘솔(https://console.aws.amazon.com/secretsmanager/) 또는 AWS CLI(get-secret-value Secrets Manager 명령)을 사용하여 비밀을 검색할 수 있습니다.

RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 Secrets Manager에서 Aurora가 관리하는 비밀의 Amazon 리소스 이름(ARN)을 찾을 수 있습니다.

Secrets Manager에서 Aurora가 관리하는 비밀에 대한 세부 정보 보기
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 Databases(데이터베이스)를 선택합니다.

  3. 그런 다음 세부 정보를 표시할 DB 클러스터 이름을 선택합니다.

  4. Configuration(구성) 탭을 선택합니다.

    마스터 보안 인증 정보 ARN에서 비밀 ARN을 볼 수 있습니다.

    Secrets Manager에서 Aurora가 관리하는 비밀에 대한 세부 정보 보기

    Manage in Secrets Manager(Secrets Manager에서 관리) 링크를 클릭하면 Secrets Manager 콘솔에서 비밀을 보고 관리할 수 있습니다.

RDS AWS CLI describe-db-clusters 명령을 사용하면 Secrets Manager에서 Aurora가 관리하는 비밀에 대한 다음 정보를 찾을 수 있습니다.

  • SecretArn - 비밀의 ARN

  • SecretStatus - 비밀의 상태

    가능한 상태 값에는 다음이 포함됩니다.

    • creating - 비밀이 생성 중입니다.

    • active - 비밀의 일반적 사용 및 교체가 가능합니다.

    • rotating - 비밀이 교체 중입니다.

    • impaired - 비밀을 데이터베이스 보안 인증 정보에 액세스하는 데 사용할 수 있지만 교체할 수는 없습니다. 예를 들어 권한이 변경되어 RDS가 더 이상 비밀 또는 비밀의 KMS 키에 액세스할 수 없는 경우 비밀이 이 상태가 될 수 있습니다.

      암호가 이 상태인 경우 상태를 초래한 조건을 수정할 수 있습니다. 상태를 초래한 조건을 수정하면 다음 교체까지 상태가 impaired로 유지됩니다. 또는 DB 클러스터를 수정하여 데이터베이스 보안 인증 정보 자동 관리를 해제한 다음 DB 클러스터를 다시 수정하여 데이터베이스 보안 인증 정보 자동 관리를 켤 수 있습니다. DB 클러스터를 수정하려면 modify-db-cluster 명령에서 --manage-master-user-password 옵션을 사용하세요.

  • KmsKeyId - 비밀을 암호화하는 데 사용된 KMS 키의 ARN입니다.

특정 DB 클러스터의 출력을 표시하려면 --db-cluster-identifier 옵션을 지정합니다. 이 예제는 DB 클러스터가 사용하는 비밀의 출력을 보여 줍니다.

aws rds describe-db-clusters --db-cluster-identifier mydbcluster

다음 샘플은 비밀 출력을 보여 줍니다.

"MasterUserSecret": { "SecretArn": "arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx", "SecretStatus": "active", "KmsKeyId": "arn:aws:kms:eu-west-1:123456789012:key/0987dcba-09fe-87dc-65ba-ab0987654321" }

보안 ARN이 있으면 get-secret-value Secrets Manager CLI 명령을 사용하여 비밀에 대한 세부 정보를 볼 수 있습니다.

이 예제는 이전 샘플 출력의 비밀에 대한 세부 정보를 보여 줍니다.

대상 LinuxmacOS, 또는Unix:

aws secretsmanager get-secret-value \ --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'

Windows의 경우:

aws secretsmanager get-secret-value ^ --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'

DescribedBClusters RDS 작업을 사용하고 DBClusterIdentifier 파라미터를 DB 클러스터 식별자로 설정하여 Secrets Manager에서 Aurora가 관리하는 비밀의 ARN, 상태, KMS 키를 볼 수 있습니다. 비밀에 대한 세부 정보가 출력에 포함됩니다.

비밀 ARN이 있으면 GetSecretValue Secrets Manager 작업을 사용하여 비밀에 대한 세부 정보를 볼 수 있습니다.