

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

# 보안 암호를 사용하여 AWS Database Migration Service 엔드포인트 액세스
<a name="security_iam_secretsmanager"></a>

의 경우 AWS DMS보안 *암호*는 보안 암호 인증을 통해 지원되는 AWS DMS 소스 또는 대상 엔드포인트**에 대한 데이터베이스 연결을 인증하기 위한 사용자 자격 증명 세트를 나타내는 데 사용할 수 있는 암호화된 키입니다. Oracle Automatic Storage Management(ASM)도 사용하는 Oracle 엔드포인트의 경우는 Oracle ASM에 액세스하려면 사용자 자격 증명을 나타내는 추가 보안 암호가 AWS DMS 필요합니다.

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

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

에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [Secrets Manager란 AWS 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 AWS Secrets Manager참조하세요.

AWS DMS 는 지원되는 소스 및 대상 엔드포인트에서 다음 온프레미스 또는 AWS관리형 데이터베이스에 대한 보안 인증을 지원합니다.
+ Amazon DocumentDB
+ IBM DB2 LUW
+ Microsoft SQL Server
+ MongoDB
+ MySQL
+ Oracle
+ PostgreSQL
+ Amazon Redshift
+ SAP ASE

이러한 데이터베이스에 연결하려면 엔드포인트 설정의 일부로 다음 값 집합 중 하나를 입력할 수 있지만 둘 다 입력할 수는 없습니다.
+ `UserName`, `Password`, `ServerName` 및 `Port` 설정을 사용하여 데이터베이스 연결을 인증하기 위한 일반 텍스트 값. Oracle ASM을 함께 사용하는 Oracle 엔드포인트의 경우, `AsmUserName`, `AsmPassword` 및 `AsmServerName` 설정을 사용하여 ASM을 인증하기 위한 추가 일반 텍스트 값을 포함하세요.
+ `SecretsManagerSecretId` 및 `SecretsManagerAccessRoleArn` 설정 값을 사용하는 보안 암호 인증. Oracle ASM을 사용하는 Oracle 엔드포인트의 경우, `SecretsManagerOracleAsmSecretId` 및 `SecretsManagerOracleAsmAccessRoleArn` 설정에 대한 추가 값을 포함하세요. 이러한 설정의 보안 암호 값에는 다음과 같은 항목이 포함될 수 있습니다.
  + `SecretsManagerSecretId` – AWS Secrets Manager에서 엔드포인트 데이터베이스 액세스를 위해 생성한 보안 암호의 전체 Amazon 리소스 이름(ARN), 부분 ARN 또는 기억하기 쉬운 이름.
  + `SecretsManagerAccessRoleArn` - 사용자를 대신하여이 보안 암호에 대한 액세스를 제공하기 위해 IAM에서 생성한 `SecretsManagerSecretId` 보안 암호 AWS DMS 액세스 역할의 ARN입니다.
  + `SecretsManagerOracleAsmSecretId` – AWS Secrets Manager에서 Oracle ASM에 액세스하기 위해 생성한 보안 암호의 전체 Amazon 리소스 이름(ARN), 부분 ARN 또는 기억하기 쉬운 이름.
  + `SecretsManagerOracleAsmAccessRoleArn` – 사용자를 대신하여 이 `SecretsManagerOracleAsmSecretId` 보안 암호에 대한 AWS DMS 액세스를 제공하기 위해 IAM에서 생성한 보안 암호 액세스 역할의 ARN.
**참고**  
또한 단일 보안 암호 액세스 역할을 사용하여 `SecretsManagerSecretId` 보안 암호와 `SecretsManagerOracleAsmSecretId` 보안 암호 모두에 대한 AWS DMS 액세스를 제공할 수 있습니다. 두 보안 암호에 대해 이 단일 보안 암호 액세스 역할을 생성하는 경우, 이 액세스 역할에 대한 동일한 ARN을 `SecretsManagerAccessRoleArn` 및 `SecretsManagerOracleAsmAccessRoleArn`에 모두 할당해야 합니다. 예를 들어, 두 보안 암호에 대한 보안 액세스 역할에서 해당 ARN `ARN2xsecrets`이 변수에 할당된 경우, 다음과 같이 ARN 설정을 지정할 수 있습니다.  

  ```
  SecretsManagerAccessRoleArn = ARN2xsecrets;
  SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;
  ```

  이러한 값을 생성하는 방법에 관한 자세한 내용은 [AWS Management Console 를 사용하여 보안 암호 및 보안 암호 액세스 역할 생성](#security_iam_secretsmanager.console) 섹션을 참조하세요.

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

**필수 사용자 권한을 제공하고 확인하려면**

1. 에 로그인 AWS Management Console 하고에서 AWS Identity and Access Management 콘솔을 엽니다[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. **사용자**를 선택한 다음, `CreateEndpoint` 및 `ModifyEndpoint` API 직접 호출에 사용되는 **사용자 ID**를 선택합니다.

1. **권한** 탭에서 **\$1\$1 JSON**을 선택합니다.

1. 사용자에게 다음과 같은 권한이 있는지 확인하세요.

   ```
   {
   	"Statement": [{
   			"Effect": "Allow",
   			"Action": [
   				"iam:GetRole",
   				"iam:PassRole"
   			],
   			"Resource": "SECRET_ACCESS_ROLE_ARN"
   		},
   		{
   			"Effect": "Allow",
   			"Action": "secretsmanager:DescribeSecret",
   			"Resource": "SECRET_ARN"
   		}
   	]
   }
   ```

1. 사용자에게 해당 권한이 없는 경우 권한을 추가하세요.

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

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

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

      ```
      aws iam get-role --role-name ROLE_NAME
      ```

      *ROLE\$1NAME*을 `SecretsManagerAccessRole`의 이름으로 바꿉니다.

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

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

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

      사용자는 기억하기 쉬운 이름, 부분 ARN 또는 전체 ARN일 수 있습니다. 자세한 내용은 [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html)을 참조하세요.

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

## AWS Management Console 를 사용하여 보안 암호 및 보안 암호 액세스 역할 생성
<a name="security_iam_secretsmanager.console"></a>

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

**를 사용하여 소스 및 대상 엔드포인트 연결에 대한 데이터베이스를 인증하는 데 사용할 AWS DMS 수 AWS Management Console 있는 보안 암호를 생성하려면**

1. 에 로그인 AWS Management Console 하고에서 AWS Secrets Manager 콘솔을 엽니다[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

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

1. **새 보안 암호 저장** 페이지의 **보안 암호 유형 선택**에서 **다른 유형의 보안 암호**를 선택한 다음, **일반 텍스트**를 선택합니다.
**참고**  
이 시점부터 엔드포인트 데이터베이스에 연결하기 위해 일반 텍스트 자격 증명 정보를 입력해야 하는 곳은 여기뿐입니다.

1. **일반 텍스트** 필드에서: 
   + `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" 
     }
     ```

1.  AWS KMS 암호화 키를 선택하여 보안 암호를 암호화합니다. 에서 서비스에 AWS Secrets Manager 대해 생성한 기본 암호화 키를 수락하거나 생성한 AWS KMS 키를 선택할 수 있습니다.

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

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

   ```
   ;.:+{}*&,%\
   ```

   AWS DMS 는 엔드포인트 자격 증명에 사용되는 암호에 이러한 문자를 허용하지 않습니다. 이러한 문자를 제외하도록 Lambda 함수를 구성하면 AWS Secrets Manager 은 이러한 문자를 교체된 비밀번호 값의 일부로 생성할 수 없습니다. Lambda 함수를 사용하도록 자동 교체를 설정하면가 AWS Secrets Manager 즉시 보안 암호를 교체하여 보안 암호 구성을 검증합니다.
**참고**  
데이터베이스 엔진 구성에 따라 데이터베이스는 교체된 자격 증명을 가져오지 못할 수도 있습니다. 이 경우, 자격 증명을 새로 고치려면 작업을 수동으로 다시 시작해야 합니다.

1. 보안 암호를 검토하고에 저장합니다 AWS Secrets Manager. 그런 다음 친숙한 이름으로 각 보안 암호를 조회한 다음 AWS Secrets Manager보안 암호 ARN을 값으로 또는 `SecretsManagerSecretId` `SecretsManagerOracleAsmSecretId` 적절하게 검색하여 엔드포인트 데이터베이스 연결 및 Oracle ASM(사용된 경우)에 대한 액세스를 인증할 수 있습니다.

**보안 암호 액세스 정책 및 역할을 생성하여 `SecretsManagerAccessRoleArn` 또는를 설정하면가 적절한 보안 암호 AWS DMS 에 액세스할 수 `SecretsManagerOracleAsmAccessRoleArn`있는 AWS Secrets Manager 에 액세스할 수 있습니다.**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) AWS Identity and Access Management (IAM) 콘솔을 엽니다.

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

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

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

   ```
   {
       "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\$1arn*에 대해 추가 JSON 리소스 객체를 지정하면 됩니다.  
보안 암호가 다른 계정에 있는 경우, `SecretsManagerAccessRoleArn` 역할에는 계정 간 보안 암호를 확인하기 위한 추가 정책이 필요합니다. 이러한 사용 사례의 경우, 정책에 작업 `secretsmanager:DescribeSecret`을 추가하세요. 교차 계정 보안 암호 설정에 대한 자세한 내용은 [ 다른 계정의 사용자에 대한 AWS Secrets Manager 보안 암호에 대한 권한을 참조하세요](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples_cross.html).

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

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

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

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

1. 4단계에서 생성한 정책을 찾아 연결한 다음, 계속 진행하여 태그를 추가하고 역할을 검토합니다. 이때 AWS DMS 리전 서비스 보안 주체를 신뢰할 수 있는 엔터티로 사용하도록 역할의 신뢰 관계를 편집합니다. 이 위탁자의 형식은 다음과 같습니다.

   ```
   dms.region-name.amazonaws.com
   ```

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

   ```
   dms.us-east-1.amazonaws.com
   ```

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

**프라이빗 서브넷의 복제 인스턴스와 함께 Secrets Manager를 사용하려면**

1. Secrets Manager VPC 엔드포인트를 생성하고 이 엔드포인트의 DNS를 기록해 둡니다. Secrets Manager VPC 엔드포인트를 생성하는 방법에 관한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [VPC 엔드포인트를 통해 Secrets Manager에 연결하기](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint) []()를 참조하세요.

1. VPC 엔드포인트 보안 그룹 수신 규칙의 경우 복제 인스턴스의 프라이빗 IP 주소 또는 복제 인스턴스에 연결된 보안 그룹의 HTTPS 트래픽을 허용합니다.

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

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

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