Eksternalisasi informasi sensitif menggunakan penyedia konfigurasi - Amazon Managed Streaming untuk Apache Kafka

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

Eksternalisasi informasi sensitif menggunakan penyedia konfigurasi

Contoh ini menunjukkan cara mengeksternalisasi informasi sensitif untuk Amazon MSK Connect menggunakan penyedia konfigurasi open source. Penyedia konfigurasi memungkinkan Anda menentukan variabel alih-alih teks biasa dalam konfigurasi konektor atau pekerja, dan pekerja yang berjalan di konektor Anda menyelesaikan variabel ini saat runtime. Ini mencegah kredensyal dan rahasia lainnya disimpan dalam teks biasa. Penyedia konfigurasi dalam contoh mendukung pengambilan parameter konfigurasi dari AWS Secrets Manager, Amazon S3 dan Systems Manager (SSM). Pada Langkah 2, Anda dapat melihat cara mengatur penyimpanan dan pengambilan informasi sensitif untuk layanan yang ingin Anda konfigurasi.

Langkah 1: Buat plugin khusus dan unggah ke S3

Untuk membuat plugin khusus, buat file zip yang berisi konektor dan msk-config-provider dengan menjalankan perintah berikut di mesin lokal Anda.

Untuk membuat plugin kustom menggunakan jendela terminal dan Debezium sebagai konektor

Gunakan AWS CLI untuk menjalankan perintah sebagai pengguna super dengan kredensyal yang memungkinkan Anda mengakses bucket S3 Anda. AWS Untuk informasi tentang menginstal dan menyiapkan AWS CLI, lihat Memulai AWS CLI di Panduan Pengguna.AWS Command Line Interface Untuk informasi tentang penggunaan AWS CLI dengan Amazon S3, lihat Menggunakan Amazon S3 dengan AWS CLI di Panduan Pengguna.AWS Command Line Interface

  1. Di jendela terminal, buat folder bernama custom-plugin di ruang kerja Anda menggunakan perintah berikut.

    mkdir custom-plugin && cd custom-plugin
  2. Unduh rilis stabil terbaru dari MySQL Connector Plug-in dari situs Debezium menggunakan perintah berikut.

    wget https://repo1.maven.org/maven2/io/debezium/debezium-connectormysql/ 2.2.0.Final/debezium-connector-mysql-2.2.0.Final-plugin.tar.gz

    Ekstrak file gzip yang diunduh di custom-plugin folder menggunakan perintah berikut.

    tar xzf debezium-connector-mysql-2.2.0.Final-plugin.tar.gz
  3. Unduh file zip penyedia konfigurasi MSK menggunakan perintah berikut.

    wget https://github.com/aws-samples/msk-config-providers/releases/download/r0.1.0/msk-config-providers-0.1.0-with-dependencies.zip

    Ekstrak file zip yang diunduh di custom-plugin folder menggunakan perintah follwoing.

    unzip msk-config-providers-0.1.0-with-dependencies.zip
  4. Zip konten penyedia konfigurasi MSK dari langkah di atas dan konektor khusus ke dalam satu file bernama. custom-plugin.zip

    zip -r ../custom-plugin.zip *
  5. Unggah file ke S3 untuk direferensikan nanti.

    aws s3 cp ../custom-plugin.zip s3:<S3_URI_BUCKET_LOCATION>
  6. Di konsol MSK Amazon, di bawah bagian MSK Connect, pilih Plugin Kustom, lalu pilih Buat plugin khusus dan telusuri ember s3: < S3_URI_BUCKET_LOCATION > S3 untuk memilih file ZIP plugin khusus yang baru saja Anda unggah.

    Amazon S3 bucket interface showing a single custom-plugin.zip file in the debezium folder.
  7. Masukkan debezium-custom-plugin untuk nama plugin. Secara opsional, masukkan deskripsi dan pilih Buat Plugin Kustom.

    Amazon S3 bucket interface showing a single custom-plugin.zip file in the debezium folder.

Langkah 2: Konfigurasikan parameter dan izin untuk penyedia yang berbeda

Anda dapat mengonfigurasi nilai parameter dalam tiga layanan ini:

  • Secrets Manager

  • Penyimpanan Parameter Systems Manager

  • S3 - Layanan Penyimpanan Sederhana

Pilih salah satu tab di bawah ini untuk petunjuk tentang pengaturan parameter dan izin yang relevan untuk layanan tersebut.

Configure in Secrets Manager
Untuk mengkonfigurasi nilai parameter di Secrets Manager
  1. Buka konsol Secrets Manager.

  2. Buat rahasia baru untuk menyimpan kredensyal atau rahasia Anda. Untuk petunjuk, lihat Membuat AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna.

  3. Salin ARN rahasia Anda.

  4. Tambahkan izin Secrets Manager dari kebijakan contoh berikut ke peran eksekusi Layanan Anda. Ganti <arn:aws:secretsmanager:us-east- 1:123456789000:secret : -1234>dengan ARN rahasia Anda. MySecret

  5. Tambahkan konfigurasi pekerja dan instruksi konektor.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": [ "<arn:aws:secretsmanager:us-east-1:123456789000:secret:MySecret-1234>" ] } ] }
  6. Untuk menggunakan penyedia konfigurasi Secrets Manager, salin baris kode berikut ke kotak teks konfigurasi pekerja di Langkah 3:

    # define name of config provider: config.providers = secretsmanager # provide implementation classes for secrets manager: config.providers.secretsmanager.class = com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider # configure a config provider (if it needs additional initialization), for example you can provide a region where the secrets or parameters are located: config.providers.secretsmanager.param.region = us-east-1
  7. Untuk penyedia konfigurasi manajer rahasia, salin baris kode berikut dalam konfigurasi konektor di Langkah 4.

    #Example implementation for secrets manager variable database.hostname=${secretsmanager:MSKAuroraDBCredentials:username} database.password=${secretsmanager:MSKAuroraDBCredentials:password}

Anda juga dapat menggunakan langkah di atas dengan lebih banyak penyedia konfigurasi.

Configure in Systems Manager Parameter Store
Untuk mengkonfigurasi nilai parameter di Systems Manager Parameter Store
  1. Buka konsol System Manager.

  2. Di panel navigasi, pilih Penyimpanan Parameter.

  3. Buat parameter baru untuk disimpan di Systems Manager. Untuk petunjuknya, lihat Membuat parameter Systems Manager (konsol) di Panduan AWS Systems Manager Pengguna.

  4. Salin ARN parameter Anda.

  5. Tambahkan izin Systems Manager dari kebijakan contoh berikut ke peran eksekusi Layanan Anda. Ganti <arn:aws:ssm:us-east- MyParameterName 1:123456789000:parameter/ > dengan ARN parameter Anda.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter" ], "Resource": "arn:aws:ssm:us-east-1:123456789000:parameter/MyParameterName" } ] }
  6. Untuk menggunakan penyedia konfigurasi penyimpanan parameter, salin baris kode berikut ke kotak teks konfigurasi pekerja di Langkah 3:

    # define name of config provider: config.providers = ssm # provide implementation classes for parameter store: config.providers.ssm.class = com.amazonaws.kafka.config.providers.SsmParamStoreConfigProvider # configure a config provider (if it needs additional initialization), for example you can provide a region where the secrets or parameters are located: config.providers.ssm.param.region = us-east-1
  7. Untuk penyedia konfigurasi penyimpanan parameter, salin baris kode berikut dalam konfigurasi konektor di Langkah 5.

    #Example implementation for parameter store variable schema.history.internal.kafka.bootstrap.servers=${ssm::MSKBootstrapServerAddress}

    Anda juga dapat menggabungkan dua langkah di atas dengan lebih banyak penyedia konfigurasi.

Configure in Amazon S3
Untuk mengonfigurasi objek/file di Amazon S3
  1. Buka konsol Amazon S3.

  2. Unggah objek Anda ke ember di S3. Untuk petunjuk, lihat Mengunggah objek.

  3. Salin ARN objek Anda.

  4. Tambahkan izin Baca Objek Amazon S3 dari kebijakan contoh berikut ke peran eksekusi Layanan Anda. Ganti <arn:aws:s3: ::MY_S3_BUCKET/path/to/custom-plugin.zip> dengan ARN objek Anda.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "<arn:aws:s3:::MY_S3_BUCKET/path/to/custom-plugin.zip>" } ] }
  5. Untuk menggunakan penyedia konfigurasi Amazon S3, salin baris kode berikut ke kotak teks konfigurasi pekerja di Langkah 3:

    # define name of config provider: config.providers = s3import # provide implementation classes for S3: config.providers.s3import.class = com.amazonaws.kafka.config.providers.S3ImportConfigProvider
  6. Untuk penyedia konfigurasi Amazon S3, salin baris kode berikut ke konfigurasi konektor di Langkah 4.

    #Example implementation for S3 object database.ssl.truststore.location = ${s3import:us-west-2:my_cert_bucket/path/to/trustore_unique_filename.jks}

    Anda juga dapat menggabungkan dua langkah di atas dengan lebih banyak penyedia konfigurasi.

Langkah 3: Buat konfigurasi pekerja khusus dengan informasi tentang penyedia konfigurasi Anda

  1. Pilih Konfigurasi pekerja di bawah bagian Amazon MSK Connect.

  2. Pilih Buat konfigurasi pekerja.

  3. Masukkan SourceDebeziumCustomConfig di kotak teks Nama Konfigurasi Pekerja. Deskripsi adalah opsional.

  4. Salin kode konfigurasi yang relevan berdasarkan penyedia yang diinginkan, dan tempelkan di kotak teks konfigurasi Pekerja.

  5. Ini adalah contoh konfigurasi pekerja untuk ketiga penyedia:

    key.converter=org.apache.kafka.connect.storage.StringConverter key.converter.schemas.enable=false value.converter=org.apache.kafka.connect.json.JsonConverter value.converter.schemas.enable=false offset.storage.topic=offsets_my_debezium_source_connector # define names of config providers: config.providers=secretsmanager,ssm,s3import # provide implementation classes for each provider: config.providers.secretsmanager.class = com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider config.providers.ssm.class = com.amazonaws.kafka.config.providers.SsmParamStoreConfigProvider config.providers.s3import.class = com.amazonaws.kafka.config.providers.S3ImportConfigProvider # configure a config provider (if it needs additional initialization), for example you can provide a region where the secrets or parameters are located: config.providers.secretsmanager.param.region = us-east-1 config.providers.ssm.param.region = us-east-1
  6. Klik pada Buat konfigurasi pekerja.

Langkah 4: Buat konektor

  1. Buat konektor baru menggunakan instruksi di Buat konektor baru.

  2. Pilih custom-plugin.zip file yang Anda unggah ke bucket S3 Anda Langkah 1: Buat plugin khusus dan unggah ke S3 sebagai sumber untuk plugin kustom.

  3. Salin kode konfigurasi yang relevan berdasarkan penyedia yang diinginkan, dan tempel di bidang konfigurasi Konektor.

  4. Ini adalah contoh untuk konfigurasi konektor untuk ketiga penyedia:

    #Example implementation for parameter store variable schema.history.internal.kafka.bootstrap.servers=${ssm::MSKBootstrapServerAddress} #Example implementation for secrets manager variable database.hostname=${secretsmanager:MSKAuroraDBCredentials:username} database.password=${secretsmanager:MSKAuroraDBCredentials:password} #Example implementation for Amazon S3 file/object database.ssl.truststore.location = ${s3import:us-west-2:my_cert_bucket/path/to/trustore_unique_filename.jks}
  5. Pilih Gunakan konfigurasi khusus dan pilih SourceDebeziumCustomConfigdari tarik-turun Konfigurasi Pekerja.

  6. Ikuti langkah-langkah yang tersisa dari instruksi di Buat konektor.

Pertimbangan

Pertimbangkan hal berikut saat menggunakan penyedia konfigurasi MSK dengan Amazon MSK Connect:

  • Tetapkan izin yang sesuai saat menggunakan penyedia konfigurasi ke Peran Eksekusi Layanan IAM.

  • Tentukan penyedia konfigurasi dalam konfigurasi pekerja dan implementasinya dalam konfigurasi konektor.

  • Nilai konfigurasi sensitif dapat muncul di log konektor jika plugin tidak mendefinisikan nilai-nilai tersebut sebagai rahasia. Kafka Connect memperlakukan nilai konfigurasi yang tidak ditentukan sama dengan nilai plaintext lainnya. Untuk mempelajari selengkapnya, lihat Mencegah rahasia muncul di log konektor.

  • Secara default, MSK Connect sering me-restart konektor saat konektor menggunakan penyedia konfigurasi. Untuk menonaktifkan perilaku restart ini, Anda dapat mengatur config.action.reload nilai ke none dalam konfigurasi konektor Anda.