本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用組態提供者將敏感資訊外部化
此範例示範如何使用開放原始碼組態提供者將 Amazon MSK Connect 的敏感資訊外部化。組態供應商讓您可在連接器或工作程序組態中指定變數 (而非純文字),而在連接器中執行的工作程序會在執行期解析這些變數。此做法可避免系統以純文字方式儲存憑證和其他秘密。範例中的組態提供者支援從 AWS Secrets Manager、Amazon S3 和 Systems Manager () 擷取組態參數SSM。在步驟 2 中,您可以了解如何設定服務的儲存和敏感資訊擷取。
考量事項
搭配 MSK Amazon MSK Connect 使用組態提供者時,請考慮下列事項:
使用組態提供者至IAM服務執行角色時,請指派適當的許可。
在工作程序組態中定義組態供應商,並在連接器組態中定義其實作。
-
如果外掛程式未將這些值定義為秘密,則敏感組態值可能會顯示在連接器日誌中。Kafka Connect 會將未定義的組態值視為與任何其他純文字值相同。如需進一步了解,請參閱 避免秘密顯示在連接器日誌中。
-
根據預設,MSKConnect 會在連接器使用組態提供者時經常重新啟動連接器。若要關閉此重新啟動行為,您可以在連接器組態中將
config.action.reload
值設定為none
。
建立自訂外掛程式並上傳至 S3
若要建立自訂外掛程式,請在本機電腦上 msk-config-provider執行下列命令,以建立包含連接器和 的 zip 檔案。
使用終端機視窗和 Debezium 作為連接器來建立自訂外掛程式
使用 AWS CLI以超級使用者身分執行命令,其中包含可讓您存取 AWS S3 儲存貯體的憑證。如需安裝和設定 的資訊 AWS CLI,請參閱 AWS Command Line Interface 使用者指南 中的 入門 AWS CLI。如需搭配 AWS CLIAmazon S3 使用 的資訊,請參閱 AWS Command Line Interface 使用者指南 中的搭配 使用 Amazon S3 AWS CLI。
-
在終端機視窗中,使用以下命令在工作區中建立名為
custom-plugin
的資料夾。mkdir custom-plugin && cd custom-plugin
-
使用下列命令,從 Debezium 網站
下載 MySQL Connector 外掛程式的最新穩定版本。 wget https://repo1.maven.org/maven2/io/debezium/debezium-connectormysql/ 2.2.0.Final/debezium-connector-mysql-2.2.0.Final-plugin.tar.gz
使用以下命令將下載的 gzip 文件解壓縮至
custom-plugin
文件夾中。tar xzf debezium-connector-mysql-2.2.0.Final-plugin.tar.gz
-
使用下列命令下載MSK組態提供者 zip 檔案
。 wget https://github.com/aws-samples/msk-config-providers/releases/download/r0.1.0/msk-config-providers-0.1.0-with-dependencies.zip
使用以下命令將下載的 zip 文件解壓縮至
custom-plugin
文件夾中。unzip msk-config-providers-0.1.0-with-dependencies.zip
-
將MSK組態提供者的內容從上述步驟和自訂連接器壓縮到名為 的單一檔案中
custom-plugin.zip
。zip -r ../custom-plugin.zip *
-
將檔案上傳至 S3 以供稍後參考。
aws s3 cp ../custom-plugin.zip s3:<
S3_URI_BUCKET_LOCATION
> 在 Amazon MSK主控台的 MSK Connect 區段下,選擇自訂外掛程式 ,然後選擇建立自訂外掛程式並瀏覽 s3:<
S3_URI_BUCKET_LOCATION
> S3 儲存貯體,以選取您剛上傳的自訂外掛程式ZIP檔案。輸入
debezium-custom-plugin
作為外掛程式名稱。輸入描述 (選用),然後選擇建立自訂外掛程式。
設定不同供應商的參數和許可
您可以在以下三項服務中設定參數值:
Secrets Manager
Systems Manager Parameter Store
S3 - Simple Storage Service
選取以下其中一個標籤,以取得設定該服務之參數和相關許可的指示。
使用您組態供應商的資訊來建立自訂工作程序組態
-
選取 Amazon MSK Connect 區段下的工作者組態。
選取建立工作程序組態。
在工作程序組態名稱文字方塊中輸入
SourceDebeziumCustomConfig
。描述為選用。根據所需的供應商複製相關組態程式碼,然後將其貼到工作程序組態文字方塊中。
以下是所有三個供應商的工作程序組態範例:
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
按一下「建立工作程序組態」。
建立連接器
根據建立新連接器中的指示來建立新連接器。
選擇您在 建立自訂外掛程式並上傳至 S3 中上傳到 S3 儲存貯體的
custom-plugin.zip
檔案作為自訂外掛程式的來源。根據所需的供應商複製相關組態程式碼,然後將其貼到連接器組態欄位中。
以下是所有三個供應商的連接器組態範例:
#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}選取使用自訂組態,然後從工作者組態下拉式清單SourceDebeziumCustomConfig中選擇 。
依照建立連接器中指示的其餘步驟進行。