보안 암호를 사용하여 AWS Database Migration Service 엔드포인트에 액세스하기 - AWS Database Migration Service

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

보안 암호를 사용하여 AWS Database Migration Service 엔드포인트에 액세스하기

예를 들어 AWS DMS, 암호는 암호 인증을 통해 지원되는 AWS DMS 원본 또는 대상 엔드포인트에 대한 데이터베이스 연결을 인증하기 위해 일련의 사용자 자격 증명을 나타내는 데 사용할 수 있는 암호화된 키입니다. Oracle ASM (자동 저장소 관리) 도 사용하는 Oracle 엔드포인트의 경우 Oracle ASM에 액세스하기 위한 사용자 자격 증명을 나타내는 추가 암호가 AWS DMS 필요합니다.

클라우드와 온프레미스에서 애플리케이션 AWS Secrets Manager, 서비스 및 IT 리소스에 액세스하기 위한 자격 증명을 안전하게 생성, 저장 및 검색하는 서비스를 사용하여 비밀 인증에 AWS DMS 필요한 암호 또는 암호를 생성할 수 있습니다. 여기에는 사용자 개입 없이 암호화된 보안 암호 값을 자동으로 주기적으로 교체할 수 있는 지원이 포함되므로 보안 인증에 대한 보안 수준이 더 향상됩니다. AWS Secrets Manager 또한 암호 값 순환을 활성화하면 암호에 의존하는 데이터베이스 마이그레이션에 영향을 주지 않고 이러한 비밀 값 순환이 이루어집니다. 엔드포인트 데이터베이스 연결을 비밀리에 인증하려면 SecretsManagerSecretId에 할당하는 ID 또는 ARN에 대한 보안 암호를 생성하십시오. 이 암호는 엔드포인트 설정에 포함해야 합니다. Oracle 엔드포인트의 일부로서 Oracle ASM을 비밀리에 인증하려면 SecretsManagerOracleAsmSecretId에 할당하는 ID 또는 ARN에 대한 보안 암호를 생성하십시오. 이 암호는 엔드포인트 설정에도 포함해야 합니다.

참고

Amazon RDS Aurora에서 관리하는 마스터 보안 인증은 사용할 수 없습니다. 이러한 자격 증명에는 연결을 설정하는 데 AWS DMS 필요한 호스트 또는 포트 정보가 포함되지 않습니다. 그 대신에 새 사용자와 보안 암호를 생성합니다. 사용자 및 보안 암호 생성에 관한 자세한 내용은 다음 를 AWS Management Console 사용하여 비밀 및 비밀 액세스 역할 생성을 참조하세요.

에 대한 자세한 내용은 AWS Secrets ManagerAWS Secrets Manager란? 을 참조하십시오. AWS Secrets Manager 사용 설명서에서.

AWS DMS 지원되는 소스 및 대상 엔드포인트에서 다음과 같은 온프레미스 또는 AWS관리형 데이터베이스에 대한 비밀 인증을 지원합니다.

  • Amazon DocumentDB

  • IBM Db2 LUW

  • Microsoft SQL Server

  • MongoDB

  • MySQL

  • Oracle

  • PostgreSQL

  • Amazon Redshift

  • SAP ASE

이러한 데이터베이스에 연결하려면 엔드포인트 설정의 일부로 다음 값 집합 중 하나를 입력할 수 있지만 둘 다 입력할 수는 없습니다.

  • UserName, Password, ServerNamePort 설정을 사용하여 데이터베이스 연결을 인증하기 위한 일반 텍스트 값. Oracle ASM을 함께 사용하는 Oracle 엔드포인트의 경우, AsmUserName, AsmPasswordAsmServerName 설정을 사용하여 ASM을 인증하기 위한 추가 일반 텍스트 값을 포함하십시오.

  • SecretsManagerSecretIdSecretsManagerAccessRoleArn 설정 값을 사용하는 보안 암호 인증. Oracle ASM을 사용하는 Oracle 엔드포인트의 경우, SecretsManagerOracleAsmSecretIdSecretsManagerOracleAsmAccessRoleArn 설정에 대한 추가 값을 포함하십시오. 이러한 설정의 보안 암호 값에는 다음과 같은 항목이 포함될 수 있습니다.

    • SecretsManagerSecretId – AWS Secrets Manager에서 엔드포인트 데이터베이스 액세스를 위해 생성한 보안 암호의 전체 Amazon 리소스 이름(ARN), 부분 ARN 또는 기억하기 쉬운 이름.

    • SecretsManagerAccessRoleArn— 사용자를 대신하여 이 SecretsManagerSecretId 비밀에 대한 액세스를 제공하기 위해 IAM에서 생성한 보안 AWS DMS 액세스 역할의 ARN.

    • SecretsManagerOracleAsmSecretId – AWS Secrets Manager에서 Oracle ASM에 액세스하기 위해 생성한 보안 암호의 전체 Amazon 리소스 이름(ARN), 부분 ARN 또는 기억하기 쉬운 이름.

    • SecretsManagerOracleAsmAccessRoleArn – 사용자를 대신하여 이 SecretsManagerOracleAsmSecretId 보안 암호에 대한 AWS DMS 액세스를 제공하기 위해 IAM에서 생성한 보안 암호 액세스 역할의 ARN.

    참고

    또한 단일 암호 액세스 역할을 사용하여 암호와 SecretsManagerSecretId 암호 모두에 AWS DMS 대한 액세스를 제공할 수 있습니다. SecretsManagerOracleAsmSecretId 두 보안 암호에 대해 이 단일 보안 암호 액세스 역할을 생성하는 경우, 이 액세스 역할에 대한 동일한 ARN을 SecretsManagerAccessRoleArnSecretsManagerOracleAsmAccessRoleArn에 모두 할당해야 합니다. 예를 들어, 두 보안 암호에 대한 보안 액세스 역할에서 해당 ARN ARN2xsecrets이 변수에 할당된 경우, 다음과 같이 ARN 설정을 지정할 수 있습니다.

    SecretsManagerAccessRoleArn = ARN2xsecrets; SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;

    이러한 값을 생성하는 방법에 관한 자세한 내용은 를 AWS Management Console 사용하여 비밀 및 비밀 액세스 역할 생성 단원을 참조하십시오.

엔드포인트에 필요한 보안 암호 및 보안 암호 액세스 역할 엔드포인트 설정을 생성하고 지정한 후에는 이러한 보안 암호 세부 정보로 CreateEndpoint 또는 ModifyEndpoint API 요청을 실행할 사용자 계정의 권한을 업데이트하십시오. 이러한 계정 권한에 보안 액세스 역할에 대한 권한과 비밀에 대한 SecretsManager:DescribeSecret 권한이 포함되는지 확인하십시오. IAM:GetRole AWS DMS 액세스 역할과 암호를 모두 검증하려면 이러한 권한이 필요합니다.

필수 사용자 권한을 제공하고 확인하려면
  1. 에 AWS Management Console 로그인하고 에서 AWS Identity and Access Management 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 사용자를 선택한 다음, CreateEndpointModifyEndpoint API 직접 호출에 사용되는 사용자 ID를 선택합니다.

  3. 권한 탭에서 {} JSON을 선택합니다.

  4. 사용자에게 다음과 같은 권한이 있는지 확인하십시오.

    { "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "SECRET_ACCESS_ROLE_ARN" }, { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "SECRET_ARN" } ] }
  5. 사용자에게 해당 권한이 없는 경우 권한을 추가하세요.

  6. IAM 역할을 사용하여 DMS API 직접 호출을 하는 경우, 각 역할에 대해 위 단계를 반복하세요.

  7. 터미널을 열고 AWS CLI 를 사용하여 위에서 사용한 역할 또는 사용자를 가정하여 권한이 올바르게 부여되었는지 확인합니다.

    1. IAM get-role 명령어 SecretAccessRole 사용에 대한 사용자의 권한을 확인합니다.

      aws iam get-role --role-name ROLE_NAME

      ROLE_NAMESecretsManagerAccessRole의 이름으로 바꿉니다.

      명령에서 오류 메시지가 반환되는 경우, 권한이 올바르게 제공되었는지 확인하십시오.

    2. Secrets Manager describe-secret 명령을 사용하여 보안 암호에 대한 사용자 권한을 확인합니다.

      aws secretsmanager describe-secret --secret-id SECRET_NAME OR SECRET_ARN --region=REGION_NAME

      사용자는 기억하기 쉬운 이름, 부분 ARN 또는 전체 ARN일 수 있습니다. 자세한 내용은 describe-secret을 참조하십시오.

      명령에서 오류 메시지가 반환되는 경우, 권한이 올바르게 제공되었는지 확인하십시오.

를 AWS Management Console 사용하여 비밀 및 비밀 액세스 역할 생성

를 사용하여 엔드포인트 인증을 위한 비밀번호를 생성하고 사용자 대신 비밀에 액세스할 수 AWS DMS 있도록 허용하는 정책 및 역할을 생성할 수 있습니다. AWS Management Console

원본 및 대상 엔드포인트 연결에 AWS Management Console 대한 데이터베이스를 인증하는 데 사용할 AWS DMS 수 있는 암호를 사용하여 암호를 만들려면
  1. 에 AWS Management Console 로그인하고 에서 AWS Secrets Manager https://console.aws.amazon.com/secretsmanager/ 콘솔을 엽니다.

  2. 새 보안 암호 저장을 선택합니다.

  3. 새 보안 암호 저장 페이지의 보안 암호 유형 선택에서 다른 유형의 보안 암호를 선택한 다음, 일반 텍스트를 선택합니다.

    참고

    이 시점부터 엔드포인트 데이터베이스에 연결하기 위해 일반 텍스트 보안 인증 정보를 입력해야 하는 곳은 여기뿐입니다.

  4. 일반 텍스트 필드에서:

    • SecretsManagerSecretId에 할당할 ID에 대한 보안 암호의 경우, 다음 JSON 구조를 입력합니다.

      { "username": db_username, "password": db_user_password, "port": db_port_number, "host": db_server_name }
      참고

      이것은 엔드포인트 데이터베이스를 인증하는 데 필요한 JSON 멤버의 최소 목록입니다. 원하는 모든 추가 JSON 엔드포인트 설정을 모두 소문자로 JSON 멤버로 추가할 수 있습니다. 하지만 AWS DMS 는 엔드포인트 인증을 위한 추가 JSON 멤버를 무시합니다.

      여기서 db_username은 다음 예제와 같이 데이터베이스에 액세스하는 사용자의 이름이고, db_user_password는 데이터베이스 사용자의 비밀번호이며, db_port_number는 데이터베이스에 액세스하기 위한 포트 번호이고, db_server_name은 웹상의 데이터베이스 서버 이름(주소)입니다.

      { "username": "admin", "password": "some_password", "port": "8190", "host": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com" }
    • SecretsManagerOracleAsmSecretId에 할당할 ID에 대한 보안 암호의 경우, 다음 JSON 구조를 입력합니다.

      { "asm_user": asm_username, "asm_password": asm_user_password, "asm_server": asm_server_name }
      참고

      이것은 Oracle 엔드포인트에 대한 Oracle ASM을 인증하는 데 필요한 JSON 멤버의 최소 목록입니다. 또한 사용 가능한 Oracle ASM 엔드포인트 설정을 기반으로 지정할 수 있는 전체 목록이기도 합니다.

      여기서 asm_username은 다음 예제와 같이 Oracle ASM에 액세스하는 사용자의 이름이고, asm_user_password는 Oracle ASM 사용자의 비밀번호이며, asm_server_name은 포트를 포함한 웹상의 Oracle ASM 서버 이름(주소)입니다.

      { "asm_user": "oracle_asm_user", "asm_password": "oracle_asm_password", "asm_server": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com:8190/+ASM" }
  5. 암호를 암호화할 AWS KMS 암호화 키를 선택합니다. 에서 서비스용으로 생성한 기본 암호화 키를 그대로 AWS Secrets Manager 사용하거나 직접 생성한 AWS KMS 키를 선택할 수 있습니다.

  6. 이 보안 암호를 참조할 이름과 설명(선택 사항)을 지정합니다. 이 이름은 SecretsManagerSecretId 또는 SecretsManagerOracleAsmSecretId 값으로 사용할 수 있는 기억하기 쉬운 이름입니다.

  7. 암호에서 자동 교체를 활성화하려면 설명된 대로 암호의 자격 증명을 교체할 권한이 있는 AWS Lambda 함수를 선택하거나 생성해야 합니다. 그러나 Lambda 함수를 사용하도록 자동 교체를 설정하기 전에 함수에 대한 구성 설정이 EXCLUDE_CHARACTERS 환경 변수 값에 다음 4자를 추가하는지 확인하십시오.

    ;.:+{}

    AWS DMS 엔드포인트 자격 증명에 사용되는 암호에는 이러한 문자를 사용할 수 없습니다. 이러한 문자를 제외하도록 Lambda 함수를 구성하면 AWS Secrets Manager 은 이러한 문자를 교체된 비밀번호 값의 일부로 생성할 수 없습니다. Lambda 함수를 사용하도록 자동 교체를 설정한 후 AWS Secrets Manager , 즉시 시크릿을 교체하여 시크릿 구성을 검증합니다.

    참고

    데이터베이스 엔진 구성에 따라 데이터베이스는 교체된 보안 인증을 가져오지 못할 수도 있습니다. 이 경우, 보안 인증을 새로 고치려면 작업을 수동으로 다시 시작해야 합니다.

  8. 암호를 검토하고 저장하십시오. AWS Secrets Manager그런 다음 에서 AWS Secrets Manager알기 쉬운 이름으로 각 암호를 검색한 다음 엔드포인트 데이터베이스 연결 및 Oracle ASM (사용하는 경우) 에 대한 액세스를 인증하는 데 적합한 SecretsManagerSecretId 값이나 SecretsManagerOracleAsmSecretId 암호 ARN을 검색할 수 있습니다.

보안 액세스 정책 및 역할을 생성하여 적절한 비밀번호에 대한 액세스를 허용하는 SecretsManagerAccessRoleArnSecretsManagerOracleAsmAccessRoleArnAWS DMS OR을 AWS Secrets Manager 설정하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/iam/ 에서 AWS Identity and Access Management (IAM) 콘솔을 엽니다.

  2. 정책을 선택한 후 정책 생성을 선택합니다.

  3. JSON을 선택하고 다음 정책을 입력하여 보안 암호에 대한 액세스 및 암호 해독을 활성화합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": secret_arn, }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": kms_key_arn, } ] }

    여기서 secret_arn은 보안 암호의 ARN(적절하다면 SecretsManagerSecretId 또는 SecretsManagerOracleAsmSecretId에서 가져올 수 있음)이고, kms_key_arn은 다음 예제와 같이 보안 암호를 암호화하는 데 사용하는 AWS KMS 키의 ARN입니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-2:123456789012:secret:MySQLTestSecret-qeHamH" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/761138dc-0542-4e58-947f-4a3a8458d0fd" } ] }
    참고

    에서 생성한 AWS Secrets Manager기본 암호화 키를 사용하는 경우 AWS KMS kms_key_arn 권한을 지정하지 않아도 됩니다.

    정책에서 두 보안 암호에 대한 액세스를 제공하도록 하려면 다른 secret_arn에 대해 추가 JSON 리소스 객체를 지정하면 됩니다.

    보안 암호가 다른 계정에 있는 경우, SecretsManagerAccessRoleArn 역할에는 계정 간 보안 암호를 확인하기 위한 추가 정책이 필요합니다. 이러한 사용 사례의 경우, 정책에 작업 secretsmanager:DescribeSecret을 추가하세요. 교차 계정 암호 설정에 대한 자세한 내용은 다른 계정의 사용자에 대한 AWS Secrets Manager 암호에 대한 권한을 참조하십시오.

  4. 기억하기 쉬운 이름과 설명(선택 사항)이 있는 정책을 검토하고 생성합니다.

  5. 역할을 선택한 다음, 역할 생성을 선택합니다.

  6. 신뢰할 수 있는 엔터티 유형으로서 AWS 서비스를 선택합니다.

  7. 서비스 목록에서 DMS를 신뢰할 수 있는 서비스로 선택하고 다음: 권한을 선택합니다.

  8. 4단계에서 생성한 정책을 찾아 연결한 다음, 계속 진행하여 태그를 추가하고 역할을 검토합니다. 이제 AWS DMS 지역 서비스 보안 주체를 신뢰할 수 있는 개체로 사용하도록 역할의 신뢰 관계를 편집하십시오. 이 보안 주체의 형식은 다음과 같습니다.

    dms.region-name.amazonaws.com

    여기서 region-name은 리전의 이름입니다(예: us-east-1). 따라서 이 지역의 AWS DMS 지역 서비스 주체는 다음과 같습니다.

    dms.us-east-1.amazonaws.com
  9. 역할의 신뢰할 수 있는 엔터티를 편집한 후 기억하기 쉬운 이름과 선택적 설명을 사용하여 역할을 생성합니다. 이제 IAM에서 기억하기 쉬운 이름으로 새 역할을 검색한 다음, 역할 ARN을 SecretsManagerAccessRoleArn 또는 SecretsManagerOracleAsmAccessRoleArn 값으로 검색하여 엔드포인트 데이터베이스 연결을 인증할 수 있습니다.

프라이빗 서브넷의 복제 인스턴스와 함께 Secrets Manager를 사용하려면
  1. Secrets Manager VPC 엔드포인트를 생성하고 이 엔드포인트의 DNS를 기록해 둡니다. Secrets Manager VPC 엔드포인트를 생성하는 방법에 관한 자세한 내용은 AWS Secrets Manager 사용 설명서VPC 엔드포인트를 통해 Secrets Manager에 연결하기를 참조하십시오.

  2. 복제 인스턴스 보안 그룹을 Secret Manager VPC 엔드포인트에 연결합니다.

  3. 복제 인스턴스 보안 그룹 송신 규칙의 경우, 대상 0.0.0.0/0으로 전송되는 모든 트래픽을 허용하십시오.

  4. 다음 예제와 같이 Secret Manager VPC 엔드포인트 DNS를 제공하려면 엔드포인트 추가 연결 속성 secretsManagerEndpointOverride=secretsManager endpoint DNS를 설정합니다.

    secretsManagerEndpointOverride=vpce-1234a5678b9012c-12345678.secretsmanager.eu-west-1.vpce.amazonaws.com