Amazon RDS Custom for SQL Server를 위한 환경 설정
Amazon RDS Custom for SQL Server DB 인스턴스용 DB 인스턴스를 생성하고 관리하기 전에 다음 작업을 수행해야 합니다.
목차
참고
사전 조건을 설정하고 Amazon RDS Custom for SQL Server를 시작하는 방법에 대한 단계별 튜토리얼을 보려면 Get started with Amazon RDS Custom for SQL Server using an CloudFormation template (Network setup)
RDS Custom for SQL Server 설정에 필요한 사전 조건
RDS Custom for SQL Server DB 인스턴스를 생성하기 전에 환경이 이 주제에 설명된 요구 사항을 충족하는지 확인합니다. CloudFormation 템플릿을 사용하여 AWS 계정 내에서 사전 조건을 설정할 수도 있습니다. 자세한 내용은 AWS CloudFormation을 사용한 구성 단원을 참조하세요.
RDS Custom for SQL Server를 사용하려면 다음과 같은 사전 조건을 구성해야 합니다.
인스턴스 생성에 필요한 AWS Identity and Access Management(IAM) 권한을 구성합니다. RDS에
create-db-instance
요청을 수행하는 데 필요한 AWS Identity and Access Management(IAM) 사용자 또는 역할입니다.-
RDS Custom for SQL Server DB 인스턴스에서 요구하는 사전 조건 리소스를 구성합니다.
-
RDS Custom 인스턴스의 암호화에 필요한 AWS KMS 키를 구성합니다. RDS Custom을 사용하려면 인스턴스 생성 시 암호화를 위한 고객 관리형 키가 필요합니다. RDS Custom DB 인스턴스 생성 요청 시 KMS 키 ARN, ID, 별칭 ARN 또는 별칭 이름이
kms-key-id
파라미터로 전달됩니다. RDS Custom for SQL Server DB 인스턴스 내에서 필요한 권한을 구성합니다. RDS Custom은 DB 인스턴스 생성 시 인스턴스 프로파일을 DB 인스턴스에 연결하고 이를 DB 인스턴스 내 자동화에 사용합니다. 인스턴스 프로파일 이름은 RDS Custom 생성 요청에서
custom-iam-instance-profile
로 설정됩니다. AWS Management Console에서 인스턴스 프로파일을 생성하거나 인스턴스 프로파일을 수동으로 생성할 수 있습니다. 자세한 내용은 AWS Management Console을 사용한 자동 인스턴스 프로파일 생성 및 수동으로 IAM 역할과 인스턴스 프로파일 생성 단원을 참조하세요.RDS Custom for SQL Server의 요구 사항에 따라 네트워킹 설정을 구성합니다. RDS Custom 인스턴스는 인스턴스 생성 시 제공하는 서브넷(DB 서브넷 그룹으로 구성)에 있습니다. 이러한 서브넷은 RDS Custom 인스턴스가 RDS 자동화에 필요한 서비스와 통신할 수 있도록 허용해야 합니다.
-
참고
위에서 언급한 요구 사항에 대해 계정 수준 권한을 제한하는 서비스 제어 정책(SCP)이 없어야 합니다.
사용 중인 계정이 AWS Organization의 일부인 경우 계정 수준 권한을 제한하는 서비스 제어 정책(SCP)이 있을 수 있습니다. SCP가 다음 절차를 사용하여 생성한 사용자 및 역할에 대한 권한을 제한하지 않도록 합니다.
SCP에 대한 자세한 내용은 AWS Organizations 사용 설명서에서 서비스 제어 정책(SCP)을 참조하세요. describe-organization AWS CLI 명령을 사용하여 계정이 AWS Organization의 일부인지 확인합니다.
AWS Organizations에 대한 자세한 내용을 알아보려면 AWS Organizations Organizations 사용 설명서의 AWS Organizations란 무엇입니까?를 참조하세요.
RDS Custom for SQL Server에 적용되는 일반 요구 사항은 RDS Custom for SQL Server 일반 요구 사항 섹션을 참조하세요.
AWS Management Console을 사용한 자동 인스턴스 프로파일 생성
RDS Custom을 사용하여 RDS Custom for SQL Server DB 인스턴스를 시작하려면 인스턴스 프로파일을 생성하고 구성해야 합니다. AWS Management Console을 사용하면 한 번에 새 인스턴스 프로파일을 만들고 연결할 수 있습니다. 이 옵션은 데이터베이스 생성, 스냅샷 복원 및 특정 시점으로 복원 콘솔 페이지의 RDS Custom 보안 섹션에서 사용할 수 있습니다. 새 인스턴스 프로파일 생성을 선택하여 인스턴스 프로파일 이름 접미사를 제공합니다. AWS Management Console은 RDS Custom 자동화 작업에 필요한 권한이 있는 새 인스턴스 프로파일을 생성합니다. 새 인스턴스 프로파일을 자동으로 만들려면 로그인한 AWS Management Console 사용자에게 iam:CreateInstanceProfile
, iam:AddRoleToInstanceProfile
, iam:CreateRole
및 iam:AttachRolePolicy
권한이 있어야 합니다.
참고
이 옵션은 AWS Management Console에서만 사용할 수 있습니다. CLI 또는 SDK를 사용하는 경우 RDS Custom 제공 CloudFormation 템플릿을 사용하거나 인스턴스 프로파일을 수동으로 생성하세요. 자세한 내용은 수동으로 IAM 역할과 인스턴스 프로파일 생성 단원을 참조하십시오.
1단계: IAM 보안 주체에 필요한 권한 부여
RDS Custom 인스턴스를 생성하기에 충분한 액세스 권한을 가지고 있는지 확인하세요. 콘솔 또는 CLI를 사용하여 RDS Custom for SQL Server DB 인스턴스를 생성하는 데 필요한 IAM 역할 또는 IAM 사용자(IAM 보안 주체라고 함)는 DB 인스턴스를 성공적으로 생성하기 위해 다음 정책 중 하나를 가지고 있어야 합니다.
-
AdministratorAccess
정책 -
다음과 같은 추가 권한이 있는
AmazonRDSFullAccess
정책:iam:SimulatePrincipalPolicy cloudtrail:CreateTrail cloudtrail:StartLogging s3:CreateBucket s3:PutBucketPolicy s3:PutBucketObjectLockConfiguration s3:PutBucketVersioning kms:CreateGrant kms:DescribeKey kms:Decrypt kms:ReEncryptFrom kms:ReEncryptTo kms:GenerateDataKeyWithoutPlaintext kms:GenerateDataKey ec2:DescribeImages ec2:RunInstances ec2:CreateTags
RDS Custom은 인스턴스 생성 시 이러한 권한을 사용합니다. 이러한 권한은 RDS Custom 작업에 필요한 리소스를 계정에 구성합니다.
kms:CreateGrant
권한에 대한 자세한 내용은 AWS KMS key 관리 섹션을 참조하세요.
다음 샘플 JSON 정책은 필요한 권한을 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ValidateIamRole", "Effect": "Allow", "Action": "iam:SimulatePrincipalPolicy", "Resource": "*" }, { "Sid": "CreateCloudTrail", "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:StartLogging" ], "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*" }, { "Sid": "CreateS3Bucket", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPolicy", "s3:PutBucketObjectLockConfiguration", "s3:PutBucketVersioning" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*" }, { "Sid": "CreateKmsGrant", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }
IAM 보안 주체가 사용자 지정 엔진 버전(CEV)을 사용하려면 다음과 같은 추가 권한이 필요합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfigureKmsKeyEncryptionPermission", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:account_id
:key/key_id
" }, { "Sid": "CreateEc2Instance", "Effect": "Allow", "Action": [ "ec2:DescribeImages", "ec2:RunInstances", "ec2:CreateTags" ], "Resource": "*" } ] }
인스턴스를 생성할 때 사용하는 계정의 ID로 account_id
를 바꿉니다. 인스턴스를 생성할 때 사용하는 AWS 리전으로 region
을 바꿉니다. 고객 관리형 키 ID로 key_id
를 바꿉니다. 필요에 따라 키를 여러 개 추가할 수 있습니다.
EC2 인스턴스를 시작하는 데 필요한 리소스 수준 권한에 대한 자세한 내용은 인스턴스 실행(RunInstances)을 참조하세요.
또한 IAM 보안 주체는 IAM 역할에 iam:PassRole
권한이 필요합니다. RDS Custom DB 인스턴스를 생성하려면 요청의 custom-iam-instance-profile
파라미터에 전달된 인스턴스 프로파일에 첨부해야 합니다. 인스턴스 프로파일과 연결된 역할은 나중에 2단계: 네트워킹, 인스턴스 프로파일 및 암호화 구성에서 생성됩니다.
참고
서비스 제어 정책(SCP), 권한 경계 또는 IAM 보안 주체와 연결된 세션 정책에서 이전에 나열된 권한을 제한하지 않는지 확인합니다.
2단계: 네트워킹, 인스턴스 프로파일 및 암호화 구성
다음 프로세스 중 하나를 사용하여 IAM 인스턴스 프로파일 역할, Virtual Private Cloud(VPC) 및 AWS KMS 대칭 암호화 키를 구성할 수 있습니다.
참고
계정이 AWS Organizations에 속한 경우 서비스 제어 정책(SCP)에서 인스턴스 프로파일 역할에 필요한 권한을 제한하지 않는지 확인해야 합니다.
이 주제의 네트워킹 구성은 공개적으로 액세스할 수 없는 DB 인스턴스에서 가장 잘 작동하도록 설계되었습니다. VPC 외부에서 이러한 DB 인스턴스에 직접 연결할 수 없습니다.
AWS CloudFormation을 사용한 구성
설정을 간소화하기 위해 AWS CloudFormation 템플릿 파일을 사용하여 CloudFormation 스택을 만들 수 있습니다. CloudFormation 템플릿은 RDS Custom의 요구 사항에 따라 모든 네트워킹, 인스턴스 프로파일, 암호화 리소스를 생성합니다.
스택을 생성하는 방법은 AWS CloudFormation 사용 설명서의 AWS CloudFormation 콘솔에서 스택 생성을 참조하세요.
AWS CloudFormation 템플릿을 사용하여 Amazon RDS Custom for SQL Server를 시작하는 방법에 대한 자습서는 AWS 데이터베이스 블로그에서 AWS CloudFormation 템플릿을 사용하여 Amazon RDS Custom for SQL Server 시작하기
CloudFormation에 필요한 파라미터
CloudFormation으로 RDS Custom 사전 조건 리소스를 구성하려면 다음 파라미터가 필요합니다.
Parameter Group | 파라미터 이름 | 기본 값 | 설명 |
---|---|---|---|
가용성 구성 | 사전 조건 설정을 위한 가용성 구성을 선택합니다. | 다중 AZ | RDS Custom 인스턴스에 대해 사전 조건을 단일 AZ 구성으로 설정할지 또는 다중 AZ 구성으로 설정할지 지정합니다. 이 구성에 다중 AZ DB 인스턴스가 하나 이상 필요한 경우 다중 AZ 구성을 사용해야 합니다. |
네트워크 구성 | VPC에 대한 IPv4 CIDR 블록 | 10.0.0.0/16 | VPC에 대해 IPv4 CIDR 블록(또는 IP 주소 범위)을 지정합니다. 이 VPC는 RDS Custom DB 인스턴스를 생성하고 사용할 수 있도록 구성되어 있습니다. |
두 프라이빗 서브넷 중 첫 번째에 대한 IPv4 CIDR 블록 | 10.0.128.0/20 | 첫 번째 프라이빗 서브넷에 대해 IPv4 CIDR 블록(또는 IP 주소 범위)을 지정합니다. RDS Custom DB 인스턴스를 생성할 수 있는 두 서브넷 중 하나입니다. 인터넷에 액세스할 수 없는 프라이빗 서브넷입니다. |
|
두 프라이빗 서브넷 중 두 번째에 대한 IPv4 CIDR 블록 | 10.0.144.0/20 | 두 번째 프라이빗 서브넷에 대해 IPv4 CIDR 블록(또는 IP 주소 범위)을 지정합니다. RDS Custom DB 인스턴스를 생성할 수 있는 두 서브넷 중 하나입니다. 인터넷에 액세스할 수 없는 프라이빗 서브넷입니다. |
|
퍼블릭 서브넷에 대한 IPv4 CIDR 블록 | 10.0.0.0/20 | 퍼블릭 서브넷에 대해 IPv4 CIDR 블록(또는 IP 주소 범위)을 지정합니다. RDS Custom DB 인스턴스와 연결할 수 있는 EC2 인스턴스를 생성할 수 있는 서브넷 중 하나입니다. 인터넷에 액세스할 수 있는 퍼블릭 서브넷입니다. |
|
RDP 액세스 구성 | 소스의 IPv4 CIDR 블록 | ‐ | 소스의 IPv4 CIDR 블록(또는 IP 주소 범위)을 지정합니다. 퍼블릭 서브넷에서 EC2 인스턴스에 RDP를 연결하는 IP 범위입니다. 설정하지 않으면 EC2 인스턴스에 대한 RDP 연결이 구성되지 않습니다. |
RDS Custom for SQL Server 인스턴스에 대한 RDP 액세스 설정 | 아니요 | EC2 인스턴스에서 RDS Custom for SQL Server 인스턴스로의 RDP 연결을 활성화할지 지정합니다. EC2 인스턴스에서 DB 인스턴스로의 RDP 연결은 기본적으로 구성되지 않습니다. |
기본 설정을 사용하여 CloudFormation 스택을 성공적으로 생성하면 AWS 계정에 다음 리소스가 생성됩니다.
-
RDS Custom에서 관리하는 데이터의 암호화를 위한 대칭 암호화 KMS 키입니다.
-
인스턴스 프로파일은 RDS Custom에서 요구하는 권한을 제공하기 위해
AmazonRDSCustomInstanceProfileRolePolicy
를 통해 IAM 역할에 연결됩니다. 자세한 내용은 AWS 관리형 정책 참조 안내서의 AmazonRDSCustomServiceRolePolicy를 참조하세요. -
CIDR 범위가 CloudFormation 파라미터로 지정된 VPC입니다. 기본값은
10.0.0.0/16
입니다. -
파라미터에 CIDR 범위가 지정된 2개의 프라이빗 서브넷과 AWS 리전에 있는 2개의 서로 다른 가용 영역입니다. 서브넷 CIDR의 기본값은
10.0.128.0/20
및10.0.144.0/20
입니다. 파라미터에 CIDR 범위가 지정된 퍼블릭 서브넷 1개. 서브넷 CIDR의 기본값은 10.0.0.0/20입니다. EC2 인스턴스는 이 서브넷에 있으며 RDS Custom 인스턴스에 연결하는 데 사용할 수 있습니다.
-
Amazon 도메인 이름 시스템(DNS) 서버에 대한 도메인 이름 확인 기능이 있는 VPC에 설정된 DHCP 옵션입니다.
-
2개의 프라이빗 서브넷과 연결되며 인터넷에 액세스할 수 없는 라우팅 테이블입니다.
퍼블릭 서브넷과 연결되며 인터넷에 액세스할 수 있는 라우팅 테이블
퍼블릭 서브넷에 대한 인터넷 액세스를 허용하기 위해 VPC와 연결되는 인터넷 게이트웨이
-
두 프라이빗 서브넷과 연결되는 네트워크 액세스 제어 목록(ACL)과 HTTPS와 VPC 내의 DB 포트로 제한된 액세스
-
RDS Custom 인스턴스와 연결할 VPC 보안 그룹입니다. 아웃바운드 HTTPS의 경우 RDS Custom과 EC2 인스턴스 보안 그룹의 인바운드 DB 포트에 필요한 AWS 서비스 엔드포인트로 액세스가 제한됩니다.
퍼블릭 서브넷의 EC2 인스턴스에 연결되는 VPC 보안 그룹. 아웃바운드 DB 포트의 경우 액세스가 RDS Custom 인스턴스 보안 그룹으로 제한됩니다.
-
RDS Custom에 필요한 AWS 서비스 엔드포인트에 대해 생성된 VPC 엔드포인트와 연결할 VPC 보안 그룹입니다.
-
RDS Custom 인스턴스가 생성되는 DB 서브넷 그룹입니다. 이 템플릿으로 생성된 2개의 프라이빗 서브넷이 DB 서브넷 그룹에 추가됩니다.
-
RDS Custom에 필요한 각 AWS 서비스 엔드포인트에 대한 VPC 엔드포인트입니다.
가용성 구성을 multi-az로 설정하면 위 목록 외에도 다음과 같은 리소스가 생성됩니다.
프라이빗 서브넷 간 통신을 허용하는 네트워크 ACL 규칙
RDS Custom 인스턴스와 연결된 VPC 보안 그룹 내 다중 AZ 포트에 대한 인바운드 및 아웃바운드 액세스
다중 AZ 통신에 필요한 AWS 서비스 엔드포인트로의 VPC 엔드포인트 연결
또한 RDP 액세스 구성을 설정하면 다음과 같은 리소스가 생성됩니다.
소스 IP 주소에서 퍼블릭 서브넷에 대한 RDP 액세스 구성:
소스 IP에서 퍼블릭 서브넷으로의 RDP 연결을 허용하는 네트워크 ACL 규칙
소스 IP에서 EC2 인스턴스와 연결된 VPC 보안 그룹으로의 RDP 포트 인그레스 액세스
퍼블릭 서브넷의 EC2 인스턴스에서 프라이빗 서브넷의 RDS Custom 인스턴스로의 RDP 액세스 구성:
퍼블릭 서브넷에서 프라이빗 서브넷으로의 RDP 연결을 허용하는 네트워크 ACL 규칙
EC2 인스턴스와 연결된 VPC 보안 그룹에서 RDS Custom 인스턴스와 연결된 VPC 보안 그룹으로의 RDP 포트에 대한 인바운드 액세스
다음 절차에 따라 RDS Custom for SQL Server용 CloudFormation 스택을 생성합니다.
AWS CloudFormation 템플릿 파일 다운로드
템플릿 파일을 다운로드하려면
-
custom-sqlserver-onboard.zip 링크의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 Save Link As(다른 이름으로 링크 저장)를 선택합니다.
-
파일을 컴퓨터에 저장하고 압축을 풉니다.
CloudFormation을 사용하여 리소스 구성
CloudFormation을 사용하여 리소스를 구성하려면
-
https://console.aws.amazon.com/cloudformation
에서 CloudFormation 콘솔을 엽니다. -
스택 생성 마법사를 시작하려면 스택 생성(Create Stack)을 선택합니다.
스택 생성(Create Stack) 페이지가 표시됩니다.
-
사전 조건 - 템플릿 준비(Prerequisite - Prepare template)에서 템플릿 준비 완료를 선택합니다.
-
템플릿 지정(Specify template)에서 다음 작업을 수행합니다.
-
템플릿 소스로 템플릿 파일 업로드를 선택합니다.
-
파일 선택에서 올바른 파일을 찾아 선택합니다.
-
-
Next(다음)를 선택합니다.
스택 세부 정보 지정(Specify stack details) 페이지가 나타납니다.
-
스택 이름에
rds-custom-sqlserver
을 입력합니다. -
파라미터(Parameters)에서 다음을 수행합니다.
-
기본 옵션을 유지하려면 다음(Next)을 선택합니다.
-
옵션을 변경하려면 적절한 가용성 구성, 네트워킹 구성 및 RDP 액세스 구성을 선택한 후 다음을 선택합니다.
파라미터를 변경하기 전에 각 파라미터에 대한 설명을 주의 깊게 살펴봅니다.
참고
이 CloudFormation 스택에서 하나 이상의 다중 AZ 인스턴스를 생성하는 경우, CloudFormation 스택 파라미터 사전 조건 설정을 위한 가용성 구성 선택이
Multi-AZ
로 설정되어 있는지 확인하세요. CloudFormation 스택을 단일 AZ로 생성하는 경우, 첫 번째 다중 AZ 인스턴스를 생성하기 전에 CloudFormation 스택을 다중 AZ 구성으로 업데이트하세요. -
-
스택 옵션 구성 페이지에서 다음을 선택합니다.
-
rds-custom-sqlserver 검토(Review rds-custom-sqlserver) 페이지에서 다음을 수행합니다.
-
기능에서 이 사용자 지정 이름을 사용하여 AWS CloudFormation이 IAM 리소스를 생성할 수 있음에 동의합니다 확인란을 선택합니다.
-
스택 생성을 선택합니다.
-
참고
이 AWS CloudFormation 스택에서 생성된 리소스를 리소스 페이지에서 직접 업데이트하지 마세요. 이렇게 하면 AWS CloudFormation 템플릿을 사용하여 이러한 리소스에 향후 업데이트를 적용할 수 없습니다.
CloudFormation은 RDS Custom for SQL Server에 필요한 리소스를 생성합니다. 스택 생성에 실패하면 이벤트(Events) 탭에서 실패한 리소스 생성 및 상태 이유를 확인할 수 있습니다.
콘솔의 이 CloudFormation 스택에 대한 출력(Outputs) 탭에는 RDS Custom for SQL Server DB 인스턴스를 생성하기 위해 파라미터로 전달할 모든 리소스 정보가 있어야 합니다. RDS Custom DB 인스턴스용 CloudFormation에서 생성한 VPC 보안 그룹과 DB 서브넷 그룹을 사용해야 합니다. 기본적으로 RDS는 기본 VPC 보안 그룹을 연결하려고 하는데, 여기에 필요한 액세스 권한이 없을 수 있습니다.
CloudFormation을 사용하여 리소스를 만든 경우 수동으로 구성을 건너뛸 수 있습니다.
CloudFormation 스택을 만든 후 일부 구성을 업데이트할 수도 있습니다. 업데이트할 수 있는 구성은 다음과 같습니다.
RDS Custom for SQL Server에 대한 가용성 구성
사전 조건 설정을 위한 가용성 구성 선택: 단일 AZ 구성과 다중 AZ 구성 간에 전환하려면 이 파라미터를 업데이트하세요. 하나 이상의 다중 AZ 인스턴스에 대해 이 CloudFormation 스택을 사용하는 경우 다중 AZ 구성을 선택하도록 스택을 업데이트해야 합니다.
RDS Custom for SQL Server에 대한 RDP 액세스 구성
소스의 IPv4 CIDR 블록: 이 파라미터를 업데이트하여 소스의 IPv4 CIDR 블록(또는 IP 주소 범위)을 업데이트할 수 있습니다. 이 파라미터를 공백으로 설정하면 소스 CIDR 블록에서 퍼블릭 서브넷으로의 RDP 액세스 구성이 제거됩니다.
RDS Custom for SQL Server에 대한 RDP 액세스 설정: EC2 인스턴스에서 RDS Custom for SQL Server 인스턴스로의 RDP 연결을 활성화하거나 비활성화합니다.
스택에서 리소스를 사용하는 모든 RDS Custom 인스턴스를 삭제한 후 CloudFormation 스택을 삭제할 수 있습니다. RDS Custom은 CloudFormation 스택을 추적하지 않으므로 스택 리소스를 사용하는 DB 인스턴스가 있는 경우 스택 삭제를 차단하지 않습니다. 스택을 삭제할 때 스택 리소스를 사용하는 RDS Custom DB 인스턴스가 없는지 확인하세요.
참고
CloudFormation 스택을 삭제하면 KMS 키를 제외하고 스택에서 생성된 모든 리소스가 삭제됩니다. KMS 키는 삭제 대기 중 상태가 되고 30일 후에 삭제됩니다. KMS 키를 유지하려면 30일 유예 기간 동안 CancelKeyDeletion 작업을 수행합니다.
수동으로 구성
리소스를 수동으로 구성하도록 선택한 경우 다음 태스크를 수행합니다.
참고
설정을 간소화하려는 경우, 수동 구성 대신 AWS CloudFormation 템플릿 파일을 사용하여 CloudFormation 스택을 만들 수 있습니다. 자세한 내용은 AWS CloudFormation을 사용한 구성 단원을 참조하십시오.
AWS CLI를 사용하여 이 섹션을 완료할 수도 있습니다. 사용하려면 최신 CLI를 다운로드하고 설치하세요.
대칭 암호화 AWS KMS 키 보유 여부 확인
대칭 암호화 AWS KMS key는 RDS Custom에 필수입니다. RDS Custom for SQL Server DB 인스턴스를 생성할 때는 KMS 키 식별자를 kms-key-id
파라미터로 제공해야 합니다. 자세한 내용은 Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결 단원을 참조하십시오.
다음과 같은 옵션이 있습니다:
-
기존에 AWS 계정에 고객 관리형 KMS 키가 있는 경우 RDS Custom과 함께 사용할 수 있습니다. 별도로 조치를 취할 필요가 없습니다.
-
다른 RDS Custom 엔진에 대해 고객 관리형 대칭 암호화 KMS 키를 이미 생성한 경우 동일한 KMS 키를 재사용할 수 있습니다. 별도로 조치를 취할 필요가 없습니다.
-
계정에 사용 중이던 고객 관리형 대칭 암호화 KMS 키가 없는 경우 AWS Key Management Service 개발자 가이드의 키 생성 지침에 따라 KMS 키를 생성합니다.
-
CEV 또는 RDS Custom DB 인스턴스를 생성하고 있으며 KMS 키가 다른 AWS 계정에 있는 경우 반드시 AWS CLI를 사용해야 합니다. 교차 계정 KMS 키에는 AWS 콘솔을 사용할 수 없습니다.
중요
RDS Custom은 AWS 관리형 KMS 키를 지원하지 않습니다.
사용하는 대칭 암호화 키는 kms:Decrypt
및 kms:GenerateDataKey
작업에 액세스할 수 있는 권한을 IAM 인스턴스 프로파일의 AWS Identity and Access Management(IAM) 역할에 제공해야 합니다. 계정에 대칭 암호화 키를 새로 사용하는 경우에는 변경할 필요가 없습니다. 아니면 대칭 암호화 키의 정책이 이러한 작업에 액세스할 권한을 부여할 수 있는지 확인하세요.
자세한 내용은 4단계: RDS Custom for Oracle의 IAM 구성 단원을 참조하십시오.
수동으로 IAM 역할과 인스턴스 프로파일 생성
인스턴스 프로파일을 수동으로 생성하고 이를 사용하여 RDS Custom 인스턴스를 시작할 수 있습니다. AWS Management Console에서 인스턴스를 생성하려는 경우 이 섹션을 건너뛰세요. AWS Management Console을 사용하면 인스턴스 프로파일을 생성하여 RDS Custom DB 인스턴스에 연결할 수 있습니다. 자세한 내용은 AWS Management Console을 사용한 자동 인스턴스 프로파일 생성 단원을 참조하십시오.
인스턴스 프로파일을 수동으로 생성할 때는 인스턴스 프로파일 이름을 custom-iam-instance-profile
파라미터로 create-db-instance
CLI 명령에 전달하세요. RDS Custom은 이 인스턴스 프로파일과 연결된 역할을 사용하여 자동화를 실행함으로써 인스턴스를 관리합니다.
RDS Custom for SQL Server에 대한 IAM 인스턴스 프로파일과 IAM 역할을 생성하려면
-
Amazon EC2에서 역할을 위임하는 데 사용할 수 있는 신뢰 정책을 통해 이름이
AWSRDSCustomSQLServerInstanceRole
인 IAM 역할을 생성합니다. -
AWS 관리형 정책
AmazonRDSCustomInstanceProfileRolePolicy
를AWSRDSCustomSQLServerInstanceRole
에 추가합니다. -
이름이
AWSRDSCustomSQLServerInstanceProfile
인 RDS Custom for SQL Server의 IAM 인스턴스 프로파일을 생성합니다. -
인스턴스 프로파일에
AWSRDSCustomSQLServerInstanceRole
역할을 추가합니다.
AWSRDSCustomSQLServerInstanceRole IAM 역할 생성
다음 예제에서는 AWSRDSCustomSQLServerInstanceRole
역할을 생성합니다. 신뢰 정책을 사용하면 Amazon EC2가 역할을 위임하도록 할 수 있습니다.
aws iam create-role \ --role-name AWSRDSCustomSQLServerInstanceRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }'
AWSRDSCustomSQLServerInstanceRole에 액세스 정책 추가
필요한 권한을 제공하려면 AWS 관리형 정책 AmazonRDSCustomInstanceProfileRolePolicy
를 AWSRDSCustomSQLServerInstanceRole
에 연결하세요. AmazonRDSCustomInstanceProfileRolePolicy
는 RDS Custom 인스턴스가 메시지를 송수신하고 다양한 자동화 작업을 수행할 수 있도록 합니다.
참고
SCP 또는 인스턴스 프로파일 역할과 관련된 권한 경계가 액세스 정책의 권한을 제한하지 않는지 확인합니다.
다음 예에서는 AWS 관리형 정책 AWSRDSCustomSQLServerIamRolePolicy
를 AWSRDSCustomSQLServerInstanceRole
역할에 연결합니다.
aws iam attach-role-policy \ --role-name AWSRDSCustomSQLServerInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy
RDS Custom for SQL Server 인스턴스 프로파일 생성
인스턴스 프로파일은 단일 IAM 역할을 포함하는 컨테이너입니다. RDS Custom은 인스턴스 프로파일을 사용하여 인스턴스에 역할을 전달합니다.
AWS Management Console을 사용하여 Amazon EC2 역할을 생성하는 경우, 콘솔이 자동으로 인스턴스 프로파일을 생성하여 역할 생성 시 역할과 동일한 이름을 부여합니다. 다음과 같이 인스턴스 프로파일을 생성하고 이름을 AWSRDSCustomSQLServerInstanceProfile
로 지정합니다.
aws iam create-instance-profile \ --instance-profile-name AWSRDSCustomSQLServerInstanceProfile
RDS Custom for SQL Server 인스턴스 프로파일에 AWSRDSCustomSQLServerInstanceRole 추가
이전에 만든 AWSRDSCustomSQLServerInstanceProfile
프로파일에 AWSRDSCustomInstanceRoleForRdsCustomInstance
역할을 추가합니다.
aws iam add-role-to-instance-profile \ --instance-profile-name AWSRDSCustomSQLServerInstanceProfile \ --role-name AWSRDSCustomSQLServerInstanceRole
VPC 수동 구성
RDS Custom DB 인스턴스는 Amazon EC2 인스턴스 또는 Amazon RDS 인스턴스와 마찬가지로 Amazon VPC 서비스를 기반으로 하는 Virtual Private Cloud(VPC)에 있습니다. 자체 VPC를 제공하고 구성해야 인스턴스 네트워킹 설정을 완벽하게 제어할 수 있습니다.
RDS Custom은 DB 인스턴스에서 다른 AWS 서비스로 통신을 전송합니다. RDS Custom DB 인스턴스를 생성하는 서브넷에서 다음 서비스에 액세스할 수 있는지 확인합니다.
-
Amazon CloudWatch
-
Amazon CloudWatch Logs
-
Amazon CloudWatch Events
-
Amazon EC2
-
Amazon EventBridge
-
Amazon S3
-
AWS Secrets Manager
-
AWS Systems Manager
다중 AZ 배포를 생성하는 경우
Amazon Simple Queue Service
필요한 서비스와 RDS Custom이 통신할 수 없는 경우 다음 이벤트가 게시됩니다.
Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent AWS services.
Database instance in incompatible-network. Amazon RDS can't connect to dependent AWS services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"
incompatible-network
오류를 방지하려면 RDS Custom DB 인스턴스와 AWS 서비스 간의 통신과 관련된 VPC 구성 요소가 다음 요구 사항을 충족하는지 확인합니다.
-
DB 인스턴스는 포트 443에서 다른 AWS 서비스로 아웃바운드 연결을 생성할 수 있습니다.
-
VPC는 RDS Custom DB 인스턴스에서 시작된 요청에 대한 수신 응답을 허용합니다.
-
RDS Custom는 각 AWS 서비스에 대한 엔드포인트의 도메인 이름을 정확하게 확인할 수 있습니다.
다른 RDS Custom DB 엔진의 VPC를 이미 구성한 경우 해당 VPC를 재사용하고 이 프로세스를 건너뛸 수 있습니다.
VPC 보안 그룹 구성
보안 그룹은 VPC 인스턴스에 대한 가상 방화벽 역할을 하며 인바운드 및 아웃바운드 트래픽을 모두 제어합니다. RDS Custom DB 인스턴스에는 네트워크 인터페이스에 연결되어 인스턴스를 보호하는 보안 그룹이 있습니다. 보안 그룹이 HTTPS를 통해 RDS Custom과 다른 AWS 서비스 간의 트래픽을 허용하는지 확인해야 합니다. 인스턴스 생성 요청 시 이 보안 그룹을 vpc-security-group-ids
파라미터로 전달합니다.
RDS Custom의 보안 그룹을 구성하는 방법
-
AWS Management Console에 로그인하고 https://console.aws.amazon.com/vpc
에서 Amazon VPC 콘솔을 엽니다. -
RDS Custom에서 기본 보안 그룹을 사용하거나 고유한 보안 그룹을 생성하도록 허용합니다.
자세한 지침은 보안 그룹을 생성하여 VPC 내부의 DB 인스턴스에 대한 액세스를 제공 섹션을 참조하세요.
-
보안 그룹이 포트 443에서 아웃바운드 연결을 허용하는지 확인합니다. RDS Custom에서 종속 AWS 서비스와 통신하려면 이 포트가 필요합니다.
-
프라이빗 VPC가 있고 VPC 엔드포인트를 사용하는 경우 DB 인스턴스와 연결된 보안 그룹이 포트 443에서 VPC 엔드포인트로의 아웃바운드 연결을 허용하는지 확인합니다. 또한 VPC 엔드포인트와 연결된 보안 그룹이 DB 인스턴스에서 포트 443의 인바운드 연결을 허용하는지 확인합니다.
수신 연결을 허용하지 않으면 RDS Custom 인스턴스가 AWS Systems Manager 및 Amazon EC2 엔드포인트에 연결할 수 없습니다. 자세한 내용은 AWS Systems Manager 사용 설명서의 Virtual Private Cloud 엔드포인트 생성을 참조하세요.
-
RDS Custom for SQL Server 다중 AZ 인스턴스의 경우 DB 인스턴스와 연결된 보안 그룹이 포트 1120에서 이 보안 그룹 자체에 인바운드 및 아웃바운드 연결을 허용하는지 확인합니다. 이는 다중 AZ RDS Custom for SQL Server DB 인스턴스의 피어 호스트 연결에 필요합니다.
보안 그룹에 대한 자세한 내용은 Amazon VPC 개발자 안내서의 VPC의 보안 그룹을 참조하세요.
종속 AWS 서비스의 엔드포인트 구성
다음 지침에 따라 모든 서비스에 대한 엔드포인트를 VPC에 추가하는 것이 좋습니다. 그러나 VPC가 AWS 서비스 엔드포인트와 통신할 수 있도록 하는 모든 솔루션을 사용할 수 있습니다. 예를 들어, 네트워크 주소 변환(NAT) 또는 AWS Direct Connect를 사용할 수 있습니다.
RDS Custom이 작동하는 AWS 서비스의 엔드포인트를 구성하려면
https://console.aws.amazon.com/vpc/
에서 Amazon VPC 콘솔을 엽니다. -
탐색 모음에서 리전 선택기를 사용하여 AWS 리전을 선택합니다.
-
탐색 창에서 엔드포인트를 선택합니다. 기본 창에서 Create Endpoint(엔드포인트 생성)를 선택합니다.
-
서비스 범주(Service category)에서 AWS 서비스를 선택합니다.
-
서비스 이름으로 테이블에 나와 있는 엔드포인트를 선택합니다.
-
VPC에서 VPC를 선택합니다.
-
서브넷에서 포함하고자 하는 각 가용 영역의 서브넷을 선택합니다.
VPC 엔드포인트는 여러 가용 영역을 아우를 수 있습니다. AWS는 선택한 각 서브넷에 VPC 엔드포인트에 대한 탄력적 네트워크 인터페이스를 생성합니다. 각 네트워크 인터페이스에는 도메인 이름 시스템(DNS) 호스트 이름과 프라이빗 IP 주소가 있습니다.
-
보안 그룹(Security group)에서 보안 그룹을 선택하거나 새로 만듭니다.
보안 그룹을 사용하면 엔드포인트에 대한 액세스를 제어하므로 방화벽을 사용하는 것과 마찬가지입니다. 보안 그룹이 포트 443에서 DB 인스턴스로부터 인바운드 연결을 허용하는지 확인합니다. VPC 보안 그룹에 대한 자세한 내용은 Amazon VPC 사용 설명서의 VPC의 보안 그룹을 참조하세요.
-
필요에 따라 정책을 VPC 엔드포인트에 연결할 수 있습니다. 엔드포인트정책은 연결 중인 AWS 서비스에 대한 액세스를 제어할 수 있습니다. 기본 정책은 모든 요청이 엔드포인트를 통과하도록 허용합니다. 사용자 지정 정책을 사용하는 경우 정책에서 DB 인스턴스의 요청이 허용되는지 확인합니다.
-
엔드포인트 생성을 선택합니다.
다음 테이블에서는 VPC가 아웃바운드 통신에 사용해야 하는 엔드포인트 목록을 찾는 방법을 안내합니다.
Service | 엔드포인트 형식 | 참고 및 링크 |
---|---|---|
AWS Systems Manager |
다음 엔드포인트 형식을 사용합니다.
|
각 리전의 엔드포인트 목록은 Amazon Web Services 일반 참조에서 AWS Systems Manager 엔드포인트 및 할당량을 참조하세요. |
AWS Secrets Manager |
|
각 리전의 엔드포인트 목록은 Amazon Web Services 일반 참조에서 AWS Secrets Manager 엔드포인트 및 할당량을 참조하세요. |
Amazon CloudWatch |
다음 엔드포인트 형식을 사용합니다.
|
모든 리전의 엔드포인트 목록은 다음을 참조하세요.
|
Amazon EC2 |
다음 엔드포인트 형식을 사용합니다.
|
각 리전의 엔드포인트 목록은 Amazon Web Services 일반 참조의 Amazon Elastic Compute Cloud 엔드포인트 및 할당량을 참조하세요. |
Amazon S3 |
|
각 리전의 엔드포인트 목록은 Amazon Web Services 일반 참조에서 Amazon Simple Storage Service 엔드포인트 및 할당량을 참조하세요. Amazon S3용 게이트웨이 엔드포인트에 대해 자세히 알아보려면 Amazon VPC 개발자 가이드에서 Amazon S3용 엔드포인트를 참조하세요. 액세스 포인트를 생성하는 방법은 Amazon VPC 개발자 안내서의 액세스 포인트 생성을 참조하세요. Amazon S3용 게이트웨이 엔드포인트를 생성하는 방법은 게이트웨이 VPC 엔드포인트를 참조하세요. |
Amazon Simple Queue Service |
sqs. 엔드포인트 형식 사용 |
각 리전의 엔드포인트 목록은 Amazon Simple Queue Service endpoints and quotas를 참조하세요. |
인스턴스 메타데이터 서비스 구성
인스턴스가 다음을 수행할 수 있는지 확인하세요.
-
인스턴스 메타데이터 서비스 버전 2(IMDSv2)를 사용하여 인스턴스 메타데이터 서비스에 액세스합니다.
-
포트 80(HTTP)을 통한 IMDS 링크 IP 주소로의 아웃바운드 통신을 허용합니다.
-
IMDSv2 링크인
http://169.254.169.254
에서 인스턴스 메타데이터를 요청합니다.
자세한 내용은 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.htmlAmazon EC2 사용 설명서의 IMDSv2 사용을 참조하세요.
크로스 인스턴스 제한 사항
위 단계에 따라 인스턴스 프로파일을 만들면 AWS 관리형 정책 AmazonRDSCustomInstanceProfileRolePolicy
를 사용하여 RDS Custom에 필요한 권한을 제공하므로 인스턴스 관리 및 모니터링을 자동화할 수 있습니다. 이 관리형 정책은 RDS Custom이 자동화를 실행하는 데 필요한 리소스에만 권한을 부여하도록 합니다. 관리형 정책을 사용하여 새 기능을 지원하고 수동 개입 없이 기존 인스턴스 프로파일에 자동으로 적용되도록 하여 보안 요구 사항을 충족하는 것이 좋습니다. 자세한 내용은 AWS AWS 관리형 정책: AmazonRDSCustomInstanceProfileRolePolicy를 참조하세요.
AmazonRDSCustomInstanceProfileRolePolicy
관리형 정책은 인스턴스 프로파일을 크로스 계정 액세스로 제한하지만, 동일한 계정 내 RDS Custom 인스턴스에서 일부 RDS Custom 관리 리소스에 대한 액세스는 허용할 수 있습니다. 요구 사항에 따라 권한 경계를 사용하여 크로스 인스턴스 액세스를 추가로 제한할 수 있습니다. 권한 경계는 ID 기반 정책을 통해 엔터티에 부여할 수 있는 최대 권한을 정의하지만, 그 자체로 권한을 부여하지는 않습니다. 자세한 내용은 경계를 사용한 유효 권한 평가를 참조하세요.
예를 들어 다음 정책은 인스턴스 프로파일 역할이 특정 AWS KMS 키에 액세스하도록 제한하고 다른 AWS KMS 키를 사용하는 인스턴스 전체에서 RDS Custom 관리형 리소스에 대한 액세스를 제한합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyOtherKmsKeyAccess", "Effect": "Deny", "Action": "kms:*", "NotResource": "arn:aws:kms:
region
:acct_id
:key/KMS_key_ID
" }, { "Sid": "NoBoundarySetByDefault", "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
참고
AmazonRDSCustomInstanceProfileRolePolicy
기 RDS Custom에 부여하는 권한을 권한 경계가 차단하지 않도록 하세요.