

# 데이터베이스 인증 및 리소스 액세스 수동 설정
<a name="limitless-load.manual"></a>

데이터베이스 인증 및 리소스 액세스를 설정하는 수동 프로세스에는 다음 단계가 있습니다.

1. [고객 관리형 AWS KMS key 만들기](#limitless-load.auth.create-kms)

1. [IAM 역할 권한 정책 추가](#limitless-load.auth.iam-policy)

1. [데이터베이스 보안 암호 만들기](#limitless-load.auth.secrets)

1. [IAM 역할 만들기](#limitless-load.auth.iam-role)

1. [고객 관리형 AWS KMS key 업데이트](#limitless-load.auth.update-kms)

이 프로세스는 선택 사항이며 [스크립트를 사용하여 데이터베이스 인증 및 리소스 액세스 설정](limitless-load.script.md)에서와 동일한 작업을 수행합니다. 스크립트를 사용하는 것이 좋습니다.

## 고객 관리형 AWS KMS key 만들기
<a name="limitless-load.auth.create-kms"></a>

[Creating symmetric encryption keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)의 프로시저에 따라 고객 관리형 KMS 키를 만듭니다. 다음 요구 사항을 충족하는 경우 기존 키를 사용할 수도 있습니다.

**고객 관리형 KMS 키를 만드는 방법**

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

1. **고객 관리형 키** 페이지로 이동합니다.

1. **키 생성**을 선택합니다.

1. **키 구성** 페이지에서 다음 단계를 따릅니다.

   1. **키 유형**에서 **대칭**을 선택합니다.

   1. **키 사용**에서 **암호화 및 해독**을 선택합니다.

   1. **다음**을 선택합니다.

1. **레이블 추가** 페이지에서 **limitless**와 같은 **별칭**을 입력한 후 **다음**을 선택합니다.

1. **키 관리 권한 정의** 페이지에서 **키 관리자가 이 키를 삭제하도록 허용** 확인란이 선택되어 있는지 확인한 후 **다음**을 선택합니다.

1. **키 사용 권한 정의** 페이지에서 **다음**을 선택합니다.

1. **검토** 페이지에서 **완료**를 선택합니다.

   나중에 키 정책을 업데이트합니다.

[IAM 역할 권한 정책 추가](#limitless-load.auth.iam-policy)에서 사용할 KMS 키의 Amazon 리소스 이름(ARN)을 기록합니다.

AWS CLI를 사용하여 고객 관리형 KMS 키를 만드는 방법에 대한 자세한 내용은 [create-key](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-key.html) 및 [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-alias.html)를 참조하세요.

## 데이터베이스 보안 암호 만들기
<a name="limitless-load.auth.secrets"></a>

데이터 로드 유틸리티가 소스 및 대상 데이터베이스 테이블에 액세스할 수 있도록 하려면 AWS Secrets Manager에서 두 개의 보안 암호를 만듭니다. 하나는 소스 데이터베이스용이고 다른 하나는 대상 데이터베이스용입니다. 이러한 보안 암호는 소스 및 대상 데이터베이스에 액세스하기 위한 사용자 이름과 암호를 저장합니다.

[Create an AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)의 프로시저에 따라 키-값 페어 보안 암호를 만듭니다.

**데이터베이스 보안 암호를 만드는 방법**

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

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

1. **보안 암호 유형 선택** 페이지에서 다음을 수행합니다.

   1. **보안 암호 유형**에서 **다른 유형의 보안 암호**를 선택합니다.

   1. **키/값 페어**에서 **일반 텍스트** 탭을 선택합니다.

   1. 다음 JSON 코드를 입력합니다. 여기서 `sourcedbreader` 및 `sourcedbpassword`는 [소스 데이터베이스 자격 증명 만들기](limitless-load.utility.md#limitless-load.users.source)의 소스 데이터베이스 사용자의 자격 증명입니다.

      ```
      {
          "username":"sourcedbreader",
          "password":"sourcedbpassword"
      }
      ```

   1. **암호화 키**에서 [고객 관리형 AWS KMS key 만들기](#limitless-load.auth.create-kms)에서 만든 KMS 키(예: `limitless`)를 선택합니다.

   1. **다음**을 선택합니다.

1. **보안 암호 구성** 페이지에서 **보안 암호 이름**(예: **source\$1DB\$1secret**)을 입력한 후 **다음**을 선택합니다.

1. **교체 구성 - *선택 사항*** 페이지에서 **다음**을 선택합니다.

1. **검토(Review)** 페이지에서 **시작(Store)**을 선택합니다.

1. 대상 데이터베이스 보안 암호에 대해 같은 프로시저를 반복합니다.

   1. 다음 JSON 코드를 입력합니다. 여기서 `destinationdbwriter` 및 `destinationdbpassword`는 [대상 데이터베이스 자격 증명 만들기](limitless-load.utility.md#limitless-load.users.destination)의 대상 데이터베이스 사용자의 자격 증명입니다.

      ```
      {
          "username":"destinationdbwriter",
          "password":"destinationdbpassword"
      }
      ```

   1. **보안 암호 이름**(예: **destination\$1DB\$1secret**)을 입력합니다.

[IAM 역할 권한 정책 추가](#limitless-load.auth.iam-policy)에서 사용할 보안 암호의 ARN을 기록합니다.

## IAM 역할 만들기
<a name="limitless-load.auth.iam-role"></a>

데이터를 로드하려면 AWS 리소스에 대한 액세스를 제공해야 합니다. 액세스를 제공하려면 [IAM 사용자에게 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)의 프로시저를 따라 `aurora-data-loader` IAM 역할을 만듭니다.

**IAM 역할을 만들려면**

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

1. **역할** 페이지로 이동합니다.

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

1. **신뢰할 수 있는 엔터티 선택** 페이지에서 다음을 수행합니다.

   1. **신뢰할 수 있는 엔터티 유형**에서 **사용자 지정 신뢰 정책**을 선택합니다.

   1. 사용자 지정 신뢰 정책에 대해 다음 JSON 코드를 입력합니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "rds.amazonaws.com"
                      ]
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. **다음**을 선택합니다.

1. **권한 추가** 페이지에서 **다음**을 선택합니다.

1. **이름, 검토 및 생성** 페이지에서 다음을 수행합니다.

   1. **역할 이름**에 **aurora-data-loader** 또는 원하는 다른 이름을 입력합니다.

   1. **태그 추가**를 선택하고 다음 태그를 입력합니다.
      + **키**: **assumer**
      + **값**: **aurora\$1limitless\$1table\$1data\$1load**
**중요**  
Aurora PostgreSQL Limitless Database는 이 태그가 있는 IAM 역할만 수임할 수 있습니다.

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

## 고객 관리형 AWS KMS key 업데이트
<a name="limitless-load.auth.update-kms"></a>

[키 정책 변경](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)의 프로시저에 따라 `aurora-data-loader` IAM 역할을 기본 키 정책에 추가합니다.

**키 정책에 IAM 역할을 추가하는 방법**

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

1. **고객 관리형 키** 페이지로 이동합니다.

1. [고객 관리형 AWS KMS key 만들기](#limitless-load.auth.create-kms)에서 만든 KMS 키(예: `limitless`)를 선택합니다.

1. **키 정책** 탭의 **키 사용자**에서 **추가**를 선택합니다.

1. **키 사용자 추가** 창에서 [IAM 역할 만들기](#limitless-load.auth.iam-role)에서 만든 IAM 역할의 이름(예: **aurora-data-loader**)을 선택합니다.

1. **추가**를 선택합니다.

## IAM 역할 권한 정책 추가
<a name="limitless-load.auth.iam-policy"></a>

만든 IAM 역할에 권한 정책을 추가해야 합니다. 이를 통해 Aurora PostgreSQL Limitless Database 데이터 로드 유틸리티는 네트워크 연결을 구축하고 소스 및 대상 DB 자격 증명 보안 암호를 검색하기 위해 관련 AWS 리소스에 액세스할 수 있습니다.

자세한 내용은 [역할 수정](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-modify_gen-policy)을 참조하세요.

**권한 정책을 추가하는 방법**

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

1. **역할** 페이지로 이동합니다.

1. **aurora-data-loader**와 같이 [IAM 역할 만들기](#limitless-load.auth.iam-role)에서 만든 IAM 역할을 선택합니다.

1. **권한** 탭의 **권한 정책**에서 **권한 추가**를 선택한 다음 **인라인 정책 생성**을 선택합니다.

1. **권한 지정** 페이지에서 **JSON** 편집기를 선택합니다.

1. 다음 템플릿을 복사하여 JSON 편집기에 붙여넣고 자리 표시자를 데이터베이스 보안 암호 및 KMS 키의 ARN으로 바꿉니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Ec2Permission",
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:CreateNetworkInterface",
                   "ec2:DeleteNetworkInterface",
                   "ec2:CreateNetworkInterfacePermission",
                   "ec2:DeleteNetworkInterfacePermission",
                   "ec2:DescribeNetworkInterfacePermissions",
                   "ec2:ModifyNetworkInterfaceAttribute",
                   "ec2:DescribeNetworkInterfaceAttribute",
                   "ec2:DescribeAvailabilityZones",
                   "ec2:DescribeRegions",
                   "ec2:DescribeVpcs",
                   "ec2:DescribeSubnets",
                   "ec2:DescribeSecurityGroups",
                   "ec2:DescribeNetworkAcls"
               ],
               "Resource": "*"
           },
           {
               "Sid": "SecretsManagerPermissions",
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:123456789012:secret:source_DB_secret-ABC123",
                   "arn:aws:secretsmanager:us-east-1:123456789012:secret:destination_DB_secret-456DEF"
               ]
           },        {
               "Sid": "KmsPermissions",
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:DescribeKey",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/aa11bb22-####-####-####-fedcba123456"
           },
           {
               "Sid": "RdsPermissions",
               "Effect": "Allow",
               "Action": [
                   "rds:DescribeDBClusters",
                   "rds:DescribeDBInstances"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 오류를 확인하고 수정합니다.

1. **다음**을 선택합니다.

1. **검토 및 생성** 페이지에 **정책 이름**(예: **data\$1loading\$1policy**)을 입력한 후 **정책 생성**을 선택합니다.