자습서 Rotating a Secret for an AWS 데이터베이스 - AWS Secrets Manager

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

자습서 Rotating a Secret for an AWS 데이터베이스

이 자습서에서는 AWS 데이터베이스에 대한 보안 암호를 생성하여 일정에 따라 교체하도록 구성합니다. 교체를 수동으로 한 번 트리거한 후 보안 암호의 새 버전으로 계속해서 액세스할 수 있는지 확인합니다.

테스트 mysql 데이터베이스 구성

이 단계에서는 Amazon Relational Database Service(Amazon RDS)에서 테스트 데이터베이스를 생성합니다. 이 자습서에서 테스트 데이터베이스는 MySQL을 실행합니다.

단계 2. 당신의 일러스트 만들기

그 다음, Secrets Manager 콘솔을 사용하여 보안 암호를 생성하고, 이를 MySQL 데이터베이스의 최초 사용자 이름 및 암호로 채웁니다. 반환된 자격 증명을 사용해서 데이터베이스에 로그인하여 보안 암호를 테스트합니다.

단계 3. 초기 처음 확인

3단계에서 새 보안 암호를 사용하여 자격 증명을 테스트하고 이를 사용하여 데이터베이스에 연결할 수 있는지 확인합니다.

단계 4. 귀하의 허리에 대한 회전 구성

4단계에서 보안 암호의 교체를 활성화하고 최초 교체를 수행합니다.

단계 5. 성공적인 회전 확인

이 단계에서는 최초 교체가 완료된 후 확인 단계를 반복하여 교체 중에 생성된 새 자격 증명을 통해 데이터베이스에 계속 액세스할 수 있는 것을 보여 줍니다.

단계 6. 정리

마지막 단계에서는 불필요한 비용을 방지하기 위해 Amazon RDS 데이터베이스 인스턴스 및 보안 암호를 제거합니다.

Prerequisites

이 자습서는 사용자가 AWS 계정에 대한 액세스 권한을 가지고 있고, 콘솔 또는 AWS CLI의 동등한 명령을 사용하여 AWS Secrets Manager 및 Amazon RDS를 구성할 전체 권한을 가진 사용자로 AWS에 로그인할 수 있다고 가정합니다.

이 자습서에서는 MySQL 클라이언트 도구인 MySQLWorkbench를 사용하여 데이터베이스와 상호 작용하고 사용자를 구성하며 상태를 점검합니다. 이 자습서에는 다음 단계의 해당 지점에 있는 설치 지침이 포함되어 있습니다.

이 자습서에서 구성한 데이터베이스는 자습서의 간편한 설정을 위해 포트 3306에서 퍼블릭 인터넷에 액세스할 수 있습니다. 이 자습서를 완료하려면 인터넷 연결 컴퓨터에서 MySQL 클라이언트 도구인 MySQLWorkbench를 사용하여 MySQL 데이터베이스에 액세스할 수 있어야 합니다. 프로덕션 서버를 안전하게 구성하려면 Lambda 및 Amazon EC2 VPC 설명서의 지침을 따르는 것이 좋습니다.

중요

교체를 수행하려면 네트워크 환경에서 데이터베이스 및 Secrets Manager 서비스와 통신하기 위해 Lambda 교체 함수를 허용해야 합니다. 이 자습서에서는 퍼블릭 인터넷 액세스로 데이터베이스를 구성하기 때문에 Lambda에서 교체 함수가 해당 퍼블릭 IP 주소를 통해 데이터베이스를 액세스하도록 자동 구성합니다. 데이터베이스 인스턴스에 대한 퍼블릭 인터넷 액세스를 차단할 경우, 데이터베이스 인스턴스와 동일한 VPC에서 실행하도록 Lambda 함수를 구성해야 합니다. 그런 다음 VPC를 프라이빗 Secrets Manager 엔드포인트로 구성하거나, VPC를 NAT 게이트웨이를 사용하여 퍼블릭 인터넷 액세스할 수 있도록 구성해야 합니다. 이렇게 해야 Lambda 교체 함수가 퍼블릭 Secrets Manager 엔드포인트를 액세스할 수 있습니다.

필요한 권한

이 자습서를 성공적으로 실행하려면 SecretsManagerReadWrite AWS 관리형 정책과 연결된 모든 권한이 있어야 합니다. 또한 IAM 역할을 만들어 권한 정책을 이 역할에 연결할 수 있는 권한이 있어야 합니다. IAMFullAccess AWS 관리형 정책을 부여하거나, iam:CreateRoleiam:AttachRolePolicy를 명시적으로 할당할 수 있습니다.

주의

iam:CreateRoleiam:AttachRolePolicy를 통해 사용자는 권한을 스스로 부여할 수 있으므로 계정의 신뢰할 수 있는 사용자에게만 이러한 정책을 부여하십시오.

테스트 mysql 데이터베이스 구성

  1. 튜토리얼의 이 부분에서는 계정에 로그인하여 mysql 데이터베이스를 구성하십시오. Amazon RDS.

  2. 다음 단계를 수행합니다.

    1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

    2. [Dashboard]에서 아래로 스크롤하여 [Create database] 섹션으로 이동한 후 [Create database]를 선택합니다.

    3. RDS 데이터베이스 설정에 대한 최신 정보는 Amazon RDS 자습서의 MySQL DB 인스턴스 생성을 참조하십시오.

      데이터베이스를 생성할 때 다음 정보를 사용하십시오.

      • DB 인스턴스 식별자: . MyTestDatabaseInstance.

      • 마스터 사용자 이름: . adminuser.

      • 마스터 암호 보안 초기 암호를 입력하고 암호를 비밀번호 확인상자. 이 암호를 기억해야 합니다. 2단계에서 보안 암호를 생성할 때 필요합니다.

      참고

      데이터베이스 생성은 최대 20분이 걸릴 수 있으며 이후 DB 인스턴스를 사용할 수 있습니다.

    4. [RDS > Databases]의 사용 가능한 데이터베이스 목록에서 데이터베이스를 선택한 다음 [Modify]를 선택합니다.

    5. 에서 네트워크 및 보안 섹션, 설정 공용 접근성 ~ Yes.

    6. [Backup] 섹션에서 [Backup retention period]를 [0 days]로 설정하여 백업을 비활성화합니다.

    7. 나머지 설정은 기본값을 유지합니다.

    8. [Continue]를 선택합니다.

    9. 에서 수정 일정 섹션, 선택 Apply immediately 그런 다음 DB 인스턴스 수정.

    10. 언제 요약 섹션 표시 이용 가능 아래 정보페이지를 새로 고친 다음 아래로 스크롤하여 연결 및 보안 섹션.

    11. 에서 보안 섹션 기본값 아래 VPC 보안 그룹. Amazon EC2의 콘솔이 열리고, 구성된 보안 그룹이 표시됩니다.

    12. 인바운드 규칙을 선택한 다음 인바운드 규칙 편집을 선택합니다.

    13. [Source type] 아래에서 [Anywhere]를 선택하고 [Save rules]를 선택합니다.

참고

자습서를 올바르게 구성하려면 최소한 이러한 설정을 사용하십시오. 프라이빗 VPC가 필요한 경우 Lambda 함수를 해당 VPC에서 실행하도록 구성해야 합니다. 다음으로 프라이빗 Secrets Manager 엔드포인트로 VPC를 구성하거나 NAT 게이트웨이를 사용하여 퍼블릭 인터넷 액세스로 VPC를 구성해야 합니다. 이러한 구성을 사용하면 Lambda 교체 함수가 퍼블릭 Secrets Manager 엔드포인트에 액세스할 수 있습니다.

단계 2. 당신의 일러스트 만들기

이 단계에서는 Secrets Manager에서 보안 암호를 생성하고, 해당 보안 암호를 데이터베이스 및 마스터 사용자의 자격 증명을 포함하는 테스트 세부 정보로 채웁니다.

보안 암호를 만들려면

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

  2. 콘솔이 이전 단계에서 Amazon RDS MySQL 데이터베이스를 생성한 리전과 동일한 리전으로 설정되어 있는지 확인합니다.

  3. [Store a new secret]을 선택합니다.

  4. [Store a new secret] 페이지의 [Select secret type] 섹션에서 [Credentials for RDS database]를 선택합니다.

  5. 사용자 이름에 1.3단계에서 제공한 마스터 사용자 이름과 일치하도록 adminuser를 입력합니다.

  6. [Password]에는 데이터베이스를 생성할 때 [adminuser]에 대해 제공한 것과 동일한 암호를 입력합니다.

  7. 암호화 키 선택에 대해 DefaultEncryptionKey로 설정된 상태로 둡니다. AWS는 기본 CMK 대신 사용자 지정 마스터 키(CMK)를 사용하는 경우 해당 계정에 청구합니다.

  8. [Select which RDS database this secret will access]에서, 1단계에서 생성한 [MyTestDatabaseInstance] 인스턴스를 선택합니다. 다음을 선택합니다.

  9. 에서 이름 및 설명 섹션, &t={\f, 유형 MyTestDatabaseMasterSecret. 선택 다음.

  10. 자동 교체 구성 섹션에서 교체를 비활성화합니다. 다음을 선택합니다.

  11. 검토 섹션에서 세부 정보를 확인한 후 저장을 선택합니다.

    Secrets Manager은 현재 새로운 보안 암호가 포함되어 있는 보안 암호 목록으로 돌아갑니다.

단계 3. 초기 처음 확인

보안 암호를 자동으로 교체하도록 구성하기 전에 보안 암호의 정보가 정확하고 데이터베이스에 연결하는 데 사용될 수 있는지 확인해야 합니다. 이 자습서는 GUI 기반 애플리케이션인 MySQL Workbench를 설치하여 연결을 테스트하는 방법을 설명합니다. 운영 체제에 맞는 클라이언트를 다운로드합니다.

최소한 AWS CLI 또는 Secrets Manager 콘솔을 사용하여 보안 암호를 검색할 수 있습니다. 그런 다음 사용자 이름과 암호를 잘라내어 MySQL 데이터베이스 클라이언트에 붙여 넣습니다.

데이터베이스 연결을 테스트하려면

  1. MySQLWorkbench 클라이언트 소프트웨어를 설치한 후 MySQLWorkbench 클라이언트를 열어 MySQLWorkbench 소개 인터페이스를 표시합니다.

  2. 에서 mysql 연결,+ 아이콘 표시 새 연결 설정.

  3. Connection Name에 대해 MyTestDatabaseInstance를 입력합니다.

  4. 호스트 이름에 대해 데이터베이스의 엔드포인트(예: MyTestDatabase.hostname.region.rds.amazonaws.com)를 입력합니다.

    데이터베이스의 세부 정보 페이지에서 엔드포인트를 찾을 수 있습니다. 에서 Amazon RDS 콘솔, 선택 데이터베이스 섹션 RDS > 데이터베이스 > mytestdatabaseinstance.

  5. 포트를 기본값인 3306으로 유지합니다.

  6. 사용자 이름 필드에 데이터베이스에 대해 생성한 사용자 이름(adminuser)을 입력합니다.

  7. 선택 Test Connection 에 데이터베이스 암호를 입력하고 암호 필드.

  8. 올바르게 구성되면 MySQLWorkbench는 연결 성공 메시지를 표시합니다.

  9. 선택 OK.

    문제 해결 도움말

    MySQLWorkbench 클라이언트에서 데이터베이스 연결이 실패하는 경우 데이터베이스가 있는 VPC에 연결된 보안 그룹을 확인하십시오. 보안 그룹의 기본 규칙은 모든 아웃바운드 트래픽을 허용하지만, 규칙을 정의하여 명시적으로 허용한 트래픽을 제외한 모든 인바운드 트래픽은 차단합니다. 퍼블릭 인터넷에서 컴퓨터를 실행하는 경우, 데이터베이스가 통신하도록 구성한 TCP 포트(일반적으로 포트 3306)에서 인터넷의 인바운드 트래픽을 보안 그룹이 허용해야 합니다. 다른 TCP 포트를 사용하도록 MySQL을 구성한 경우 그에 맞게 보안 규칙을 업데이트해야 합니다.

단계 4. 귀하의 허리에 대한 회전 구성

이제 보안 암호의 초기 자격 증명이 확인되었으므로 첫 번째 교체를 구성하고 시작할 수 있습니다.

보안 암호 교체를 구성하려면

  1. Secrets Manager 콘솔에서 보안 암호 MyTestDatabaseMasterSecret를 선택합니다.

  2. 비밀 세부 정보 페이지의 비밀 구성 섹션에서 교체 편집을 선택합니다.

  3. [Edit rotation configuration] 페이지에서 [Enable automatic rotation]을 선택합니다.

  4. [Select rotation interval]에서 [30 days]를 선택합니다.

  5. 교체 수행에 사용할 보안 암호 선택에서 이 보안 암호 사용을 선택합니다.

  6. 저장을 선택합니다. Secrets Manager는 Lambda 교체 함수를 만들고, Secrets Manager가 함수를 호출할 수 있게 하는 역할을 연결하는 등 보안 암호에 대한 교체 구성을 시작합니다.

  7. 교체가 구성되는 중입니다.라는 메시지가 보안 암호 MyTestDatabaseMasterSecret을 저장했고 보안 암호 교체가 활성화되었습니다.로 변경될 때까지 콘솔 페이지에서 기다립니다.

단계 5. 성공적인 회전 확인

보안 암호를 교체한 후에는 보안 암호의 새 자격 증명이 데이터베이스와 연결되는지 확인할 수 있습니다.

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

  2. 보안 암호 MyTestDatabaseMasterSecret을 선택합니다.

  3. 보안 암호 값 검색을 선택합니다.

  4. 암호 필드를 찾습니다.

    보안 암호를 성공적으로 교체한 경우 암호가 원래 보안 암호 대신 E4%I)rj)vmpRg)U}++=}GHAnNDD1v0cJ와 비슷한 보안 암호로 변경되어야 합니다.

  5. 데이터베이스에 액세스하려면 MySQLWorkbench를 열고 MyTestDatabase 연결을 선택합니다.

  6. 암호를 묻는 메시지가 나타나면 Secrets Manager에서 암호를 복사하여 암호 필드에 붙여넣습니다. [OK]를 선택합니다.

    새 암호로 데이터베이스에 성공적으로 액세스하고 보안 암호 교체가 작동하는지 확인할 수 있습니다.

단계 6. 정리

중요

자습서: 마스터 보안 암호로 사용자 보안 암호 교체 자습서도 수행하려면 해당 자습서를 완료할 때까지 이 단계를 수행하지 않습니다.

데이터베이스 및 보안 암호로 인해 AWS 청구서에 요금이 부과될 수 있으므로 자습서 실험을 완료한 후 이 자습서에서 생성한 데이터베이스 인스턴스와 보안 암호를 제거해야 합니다.

보안 암호 삭제

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

  2. 보안 암호 목록에서 이 자습서용으로 생성한 MyTestDatabaseSecret 보안 암호를 선택합니다.

  3. [Actions]를 선택한 후 [Delete secret]을 선택합니다.

  4. 비밀 삭제 예약 대화 상자의 대기 기간 입력에 허용된 최소값인 7을 입력합니다.

  5. [Schedule deletion]을 선택합니다.

    복구 기간의 일수가 경과한 후 Secrets Manager에서 보안 암호를 영구적으로 제거합니다.

데이터베이스 인스턴스를 삭제하려면

  1. https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 인스턴스를 선택합니다.

  3. 사용 가능한 인스턴스 목록에서 이 자습서용으로 생성한 MyTestDatabaseInstance 인스턴스를 선택합니다.

  4. [Instance actions]를 선택한 다음 [Delete]를 선택합니다.

  5. DB 인스턴스 삭제 페이지에서 옵션 섹션의 최종 스냅샷 생성에서 아니요를 선택합니다.

  6. 모든 데이터가 손실된다는 설명을 확인하고 삭제를 선택합니다.