View a markdown version of this page

Penyiapan SQL Server - AWS Transformasi

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Penyiapan SQL Server

Lakukan langkah-langkah ini di lingkungan SQL Server Anda untuk mengaktifkan modernisasi AWS Transform.

Pengaturan dan konfigurasi basis data

Langkah 1: Buat pengguna database dengan izin yang diperlukan

Buat pengguna database khusus untuk AWS Transform dengan izin yang diperlukan. Jika Anda sudah memiliki pengguna Konversi Skema DMS, Anda dapat menggunakannya kembali.

Connect ke instance SQL Server Anda dan jalankan perintah berikut:

-- 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];
catatan

Ulangi perintah khusus database (USE, CREATE USER, GRANT) untuk setiap database yang ingin Anda modernisasi.

Peran db_datareader hanya diperlukan untuk migrasi data, bukan untuk konversi skema saja.

  • Peran db_datareader memberikan akses baca ke semua tabel dalam database

  • Peran ini hanya diperlukan saat melakukan migrasi data.

  • Untuk konversi skema saja (tanpa migrasi data), peran db_datareader TIDAK diperlukan

  • Izin lainnya (VIEW DEFINITION, VIEW DATABASE STATE, dll.) Cukup untuk konversi skema

Langkah 2: Simpan kredensil di AWS Secrets Manager

Simpan kredensyal database Anda dengan aman di Secrets Manager AWS . Lewati langkah ini jika Anda sudah memiliki rahasia yang dibuat untuk DMS.

  1. Arahkan ke AWS Secrets Manager di konsol

  2. Pilih Simpan rahasia baru

  3. Konfigurasikan rahasianya:

    • Tipe rahasia: Kredensyal untuk database lain

    • Basis Data: Microsoft SQL Server

    • Nama pengguna: atx_user (atau nama pengguna pilihan Anda)

    • Kata sandi: Kata sandi yang Anda buat

    • Nama server: Titik akhir SQL Server Anda

    • Nama database: Nama database Anda

    • Port: 1433 (atau port khusus Anda)

  4. Pilih Berikutnya

  5. Masukkan nama rahasia: atx-db-modernnization-sqlserver

  6. Tambahkan tag yang diperlukan (tag ini wajib):

    • Kunci: Proyek, Nilai: atx-db-modernisasi

    • Kunci: Pemilik, Nilai: konektor database

  7. Pilih Berikutnya melalui layar yang tersisa

  8. Pilih Toko

  9. Perhatikan Rahasia ARN untuk digunakan pada langkah berikutnya

penting

Kata sandi database harus menggunakan karakter ASCII yang dapat dicetak saja, tidak termasuk '/', '@', '"', dan spasi. Rahasia yang dijadwalkan untuk dihapus dapat menyebabkan kegagalan transformasi.

Langkah 3: Buat peran DMS yang diperlukan

AWS Transform membutuhkan peran IAM khusus untuk operasi DMS. Terapkan peran ini menggunakan CloudFormation template di bawah ini.

catatan

Jika AWS akun Anda sudah memiliki DMS-related peran yang ada, ubah templat ini untuk menggunakan kembali sumber daya tersebut daripada membuat duplikat.

Buat file bernama dms-roles.yaml dengan konten berikut:

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

Terapkan CloudFormation tumpukan menggunakan AWS CLI:

aws cloudformation create-stack \ --stack-name dms-roles \ --template-body file://dms-roles.yaml \ --capabilities CAPABILITY_NAMED_IAM \ --region us-east-1

Atau terapkan menggunakan AWS Konsol:

  1. Arahkan ke CloudFormation di AWS Konsol

  2. Pilih Buat tumpukan

  3. Pilih Unggah file templat

  4. Unggah file dms-roles.yaml

  5. Masukkan nama tumpukan: dms-role

  6. Akui kemampuan IAM

  7. Pilih Buat tumpukan

Langkah 4: Konfigurasikan keamanan jaringan

Pastikan konektivitas jaringan yang tepat antara AWS Transform, database SQL Server Anda, dan AWS layanan lainnya.

Konfigurasi grup keamanan (pendekatan yang disarankan)

Pendekatan yang Disarankan: Gunakan kontrol akses berbasis grup keamanan daripada IP-based aturan. Ini memberikan keamanan yang lebih baik, manajemen yang lebih mudah, dan bekerja dengan mulus dengan arsitektur AWS Transform.

Mengapa Kontrol Group-Based Akses Keamanan?

  • Konversi Skema DMS menciptakan Antarmuka Jaringan Elastis (ENI) dalam VPC Anda

  • Database Anda tidak perlu diakses publik

  • AWS Transform tidak mengekspos alamat IP pribadi, membuat IP-based aturan menjadi rumit

  • Referensi grup keamanan menyediakan pembaruan dinamis dan otomatis sebagai skala sumber daya

Konfigurasikan grup keamanan SQL Server Anda

Saat mengonfigurasi Profil Instans Konversi Skema DMS di AWS Transform, Anda menentukan Grup Keamanan untuk instance DMS SC. Grup keamanan database Anda harus mengizinkan lalu lintas masuk dari grup keamanan DMS SC ini.

Step-by-step konfigurasi:

  1. Identifikasi Grup Keamanan Konversi Skema DMS:

    • Ini ditentukan saat membuat Profil Instance di AWS Transform

    • Perhatikan ID Grup Keamanan (mis., sg-0123456789abcdef0)

  2. Perbarui aturan masuk Grup Keamanan SQL Server Anda:

    • Jenis: TCP Kustom

    • Port: 1433 (atau port SQL Server kustom Anda)

    • Sumber: ID Grup Keamanan Konversi Skema DMS

    • Deskripsi: “Izinkan akses Konversi Skema DMS”

  3. Untuk target Aurora PostgreSQL (setelah pembuatan):

    • Jenis: PostgreSQL

    • Port: 5432 (atau port PostgreSQL kustom Anda)

    • Sumber: ID Grup Keamanan Konversi Skema DMS

    • Deskripsi: “Izinkan akses Konversi Skema DMS”

penting

Penting untuk Model Keamanan dengan Keistimewaan Terkecil: Jika organisasi Anda menggunakan model keamanan “paling tidak memiliki hak istimewa” yang memblokir semua lalu lintas secara default, Anda harus secara eksplisit mengizinkan lalu lintas masuk dari Grup Keamanan Konversi Skema DMS ke port database Anda. Jangan buka port 1433 ke semua sumber atau rentang IP.

Diperlukan AWS konektivitas layanan

Pastikan VPC Anda dapat berkomunikasi dengan:

  • AWS Mengubah titik akhir layanan

  • AWS DMS titik akhir

  • Titik akhir Aurora PostgreSQL

  • Titik akhir S3 untuk penyimpanan artefak

  • AWS Secrets Manager titik akhir

  • AWS CodeConnections titik akhir

Titik Akhir VPC: Untuk jaringan pribadi, konfigurasikan titik akhir VPC untuk AWS layanan yang diperlukan guna menghindari dependensi gateway internet.

Persyaratan untuk database yang dihosting secara eksternal

Jika database SQL Server Anda di-host di luar AWS, pastikan prasyarat berikut terpenuhi dan kemudian selesaikan langkah-langkah penyiapan sebelum Anda memulai modernisasi.

Prasyarat

  • AWS Akun dengan VPC

  • Konektivitas jaringan antara VPC dan database eksternal. Untuk informasi tentang mengonfigurasi konektivitas jaringan, lihat Mengonfigurasi konektivitas jaringan di AWS DMS Panduan Pengguna.

Langkah-langkah pengaturan

  1. Buat rahasia AWS Secrets Manager dengan detail koneksi untuk database eksternal. Untuk informasi selengkapnya, lihat Langkah 2: Simpan kredensil di AWS Secrets Manager.

  2. Saat diminta, berikan ID VPC dan ID grup keamanan untuk menghubungkan ke database eksternal. AWS Transform meminta Anda untuk informasi ini karena nama host database dalam rahasia tidak dapat diselesaikan dalam akun. AWS