기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SQL Server 설정
SQL Server 환경에서 다음 단계를 수행하여 현대화 AWS 변환을 활성화합니다.
데이터베이스 설정 및 구성
1단계: 필요한 권한이 있는 데이터베이스 사용자 생성
필요한 권한을 가진 AWS 변환 전용 데이터베이스 사용자를 생성합니다. 이미 DMS Schema Conversion 사용자가 있는 경우 재사용할 수 있습니다.
SQL Server 인스턴스에 연결하고 다음 명령을 실행합니다.
-- Create the login in master database USE master; CREATE LOGIN [atx_user] WITH PASSWORD = 'YourStrongPassword123!'; -- Switch to your application database USE [YourDatabaseName]; CREATE USER [atx_user] FOR LOGIN [atx_user]; -- Grant required permissions GRANT VIEW DEFINITION TO [atx_user]; GRANT VIEW DATABASE STATE TO [atx_user]; ALTER ROLE [db_datareader] ADD MEMBER [atx_user]; -- Grant master database permissions USE master; GRANT VIEW SERVER STATE TO [atx_user]; GRANT VIEW ANY DEFINITION TO [atx_user];
참고
현대화하려는 각 데이터베이스에 대해 데이터베이스별 명령(USE, CREATE USER, GRANT)을 반복합니다.
db_datareader 역할은 스키마 변환에만 필요하지 않고 데이터 마이그레이션에만 필요합니다.
db_datareader 역할은 데이터베이스의 모든 테이블에 대한 읽기 액세스 권한을 부여합니다.
이 역할은 데이터 마이그레이션을 수행할 때만 필요합니다.
스키마 변환의 경우에만(데이터 마이그레이션 제외) db_datareader 역할은 필요하지 않습니다.
다른 권한(VIEW DEFINITION, VIEW DATABASE STATE 등)은 스키마 변환에 충분합니다.
2단계: AWS Secrets Manager에 자격 증명 저장
데이터베이스 자격 증명을 AWS Secrets Manager에 안전하게 저장합니다. DMS에 대한 보안 암호가 이미 생성된 경우이 단계를 건너뜁니다.
콘솔에서 AWS Secrets Manager로 이동
새 보안 암호 저장을 선택합니다.
보안 암호를 구성합니다.
보안 암호 유형: 다른 데이터베이스의 자격 증명
데이터베이스: Microsoft SQL Server
사용자 이름: atx_user(또는 선택한 사용자 이름)
암호: 생성한 암호
서버 이름: SQL Server 엔드포인트
데이터베이스 이름: 데이터베이스 이름
포트: 1433(또는 사용자 지정 포트)
다음을 선택합니다.
보안 암호 이름 입력: atx-db-modernization-sqlserver
필수 태그를 추가합니다(이러한 태그는 필수).
키: 프로젝트, 값: atx-db-modernization
키: 소유자, 값: 데이터베이스 커넥터
나머지 화면에서 다음을 선택합니다.
스토어 선택
다음 단계에서 사용할 보안 암호 ARN을 기록해 둡니다.
중요
데이터베이스 암호는 '/', '@', '"' 및 공백을 제외한 인쇄 가능한 ASCII 문자만 사용해야 합니다. 삭제가 예약된 보안 암호는 변환 실패를 일으킬 수 있습니다.
3단계: 필수 DMS 역할 생성
AWS 변환에는 DMS 작업에 대한 특정 IAM 역할이 필요합니다. 아래 CloudFormation 템플릿을 사용하여 이러한 역할을 배포합니다.
참고
AWS 계정에 이미 기존 DMS 관련 역할이 있는 경우 중복을 생성하는 대신 해당 리소스를 재사용하도록이 템플릿을 수정합니다.
다음 콘텐츠를 사용하여 dms-roles.yaml이라는 파일을 생성합니다.
AWSTemplateFormatVersion: '2010-09-09' Description: 'DMS Service Roles for AWS Transform SQL Server Modernization' Resources: DMSCloudWatchLogsRole: Type: AWS::IAM::Role Properties: RoleName: dms-cloudwatch-logs-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole DMSS3AccessRole: Type: AWS::IAM::Role Properties: RoleName: dms-s3-access-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: S3TaggedAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - s3:GetBucketLocation - s3:GetBucketVersioning - s3:PutObject - s3:PutBucketVersioning - s3:GetObject - s3:GetObjectVersion - s3:ListBucket - s3:DeleteObject Resource: arn:aws:s3:::atx-db-modernization-* Condition: StringEquals: aws:ResourceAccount: !Ref AWS::AccountId DMSSecretsManagerRole: Type: AWS::IAM::Role Properties: RoleName: dms-secrets-manager-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: SecretsManagerTaggedAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue - secretsmanager:DescribeSecret Resource: '*' Condition: StringEquals: secretsmanager:ResourceTag/Project: atx-db-modernization secretsmanager:ResourceTag/Owner: database-connector DMSVPCRole: Type: AWS::IAM::Role Properties: RoleName: dms-vpc-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole DMSServerlessRole: Type: AWS::IAM::ServiceLinkedRole Properties: AWSServiceName: dms.amazonaws.com Description: 'Service Linked Role for AWS DMS Serverless' Outputs: DMSCloudWatchLogsRoleArn: Description: ARN of the DMS CloudWatch Logs Role Value: !GetAtt DMSCloudWatchLogsRole.Arn DMSS3AccessRoleArn: Description: ARN of the DMS S3 Access Role Value: !GetAtt DMSS3AccessRole.Arn DMSSecretsManagerRoleArn: Description: ARN of the DMS Secrets Manager Role Value: !GetAtt DMSSecretsManagerRole.Arn DMSVPCRoleArn: Description: ARN of the DMS VPC Role Value: !GetAtt DMSVPCRole.Arn Export: Name: !Sub ${AWS::StackName}-VPCRole DMSServerlessRoleArn: Description: ARN of the DMS Serverless Role Value: !Sub 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dms.amazonaws.com/AWSServiceRoleForDMSServerless' Export: Name: !Sub ${AWS::StackName}-ServerlessRole
AWS CLI를 사용하여 CloudFormation 스택을 배포합니다.
aws cloudformation create-stack \ --stack-name dms-roles \ --template-body file://dms-roles.yaml \ --capabilities CAPABILITY_NAMED_IAM \ --region us-east-1
또는 AWS 콘솔을 사용하여 배포합니다.
AWS 콘솔에서 CloudFormation으로 이동
스택 생성을 선택합니다.
템플릿 파일 업로드를 선택합니다.
dms-roles.yaml 파일 업로드
스택 이름 입력: dms-roles
IAM 기능 승인
스택 생성을 선택합니다.
4단계: 네트워크 보안 구성
AWS 변환, SQL Server 데이터베이스 및 기타 AWS 서비스 간에 네트워크 연결이 적절한지 확인합니다.
보안 그룹 구성(권장 접근 방식)
권장 접근 방식: IP 기반 규칙 대신 보안 그룹 기반 액세스 제어를 사용합니다. 이렇게 하면 보안이 향상되고 관리가 쉬워지며 AWS Transform의 아키텍처와 원활하게 작동합니다.
보안 그룹 기반 액세스 제어가 필요한 이유
DMS Schema Conversion은 VPC 내에 탄력적 네트워크 인터페이스(ENIs)를 생성합니다.
데이터베이스에 공개적으로 액세스할 필요가 없습니다.
AWS 변환은 프라이빗 IP 주소를 노출하지 않으므로 IP 기반 규칙이 복잡합니다.
보안 그룹 참조는 리소스 규모에 따라 동적 자동 업데이트를 제공합니다.
SQL Server 보안 그룹 구성
AWS 변환에서 DMS Schema Conversion Instance Profile을 구성할 때 DMS SC 인스턴스에 대한 보안 그룹을 지정합니다. 데이터베이스 보안 그룹은이 DMS SC 보안 그룹의 인바운드 트래픽을 허용해야 합니다.
Step-by-step 구성:
DMS Schema Conversion 보안 그룹을 식별합니다.
AWS 변환에서 인스턴스 프로파일을 생성할 때 지정됩니다.
보안 그룹 ID 기록(예: sg-0123456789abcdef0)
SQL Server 보안 그룹 인바운드 규칙을 업데이트합니다.
유형: 사용자 지정 TCP
포트: 1433(또는 사용자 지정 SQL Server 포트)
소스: DMS Schema Conversion Security Group ID
설명: "DMS Schema Conversion 액세스 허용"
Aurora PostgreSQL 대상의 경우(생성 후):
유형: PostgreSQL
포트: 5432(또는 사용자 지정 PostgreSQL 포트)
소스: DMS Schema Conversion 보안 그룹 ID
설명: "DMS Schema Conversion 액세스 허용"
중요
최소 권한 보안 모델에 중요: 조직에서 기본적으로 모든 트래픽을 차단하는 "최소 권한" 보안 모델을 사용하는 경우 DMS Schema Conversion Security Group에서 데이터베이스 포트로의 인바운드 트래픽을 명시적으로 허용해야 합니다. 모든 소스 또는 IP 범위에 대해 포트 1433을 열지 마십시오.
필수 AWS 서비스 연결
VPC가 다음과 통신할 수 있는지 확인합니다.
AWS 서비스 엔드포인트 변환
AWS DMS 엔드포인트
Aurora PostgreSQL 엔드포인트
아티팩트 스토리지용 S3 엔드포인트
AWS Secrets Manager 엔드포인트
AWS CodeConnections 엔드포인트
VPC 엔드포인트: 프라이빗 네트워크의 경우 인터넷 게이트웨이 종속성을 방지하기 위해 필요한 AWS 서비스에 대한 VPC 엔드포인트를 구성합니다.
외부 호스팅 데이터베이스에 대한 요구 사항
SQL Server 데이터베이스가 외부에서 호스팅되는 경우 AWS다음 사전 조건을 충족하는지 확인한 다음 현대화를 시작하기 전에 설정 단계를 완료합니다.
사전 조건
-
VPC가 있는 AWS 계정
-
VPC와 외부 데이터베이스 간의 네트워크 연결. 네트워크 연결 구성에 대한 자세한 내용은 AWS DMS 사용 설명서의 네트워크 연결 구성을 참조하세요.
설정 단계
-
외부 데이터베이스의 연결 세부 정보를 AWS Secrets Manager 사용하여에서 보안 암호를 생성합니다. 자세한 내용은 2단계: AWS Secrets Manager에 자격 증명 저장 단원을 참조하십시오.
-
메시지가 표시되면 외부 데이터베이스에 연결하기 위한 VPC ID와 보안 그룹 ID를 제공합니다. 보안 암호의 데이터베이스 호스트 이름을 AWS 계정 내에서 확인할 수 없으므로 AWS 변환에이 정보를 입력하라는 메시지가 표시됩니다.