기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: 구성 공급자를 사용하여 민감한 정보 외부화
이 예제는 오픈 소스 구성 공급자를 사용하여 Amazon MSK Connect에 대한 민감한 정보를 외부화하는 방법을 보여줍니다. 구성 공급자를 사용하면 커넥터 또는 작업자 구성에서 일반 텍스트 대신 변수를 지정할 수 있으며 커넥터에서 실행 중인 작업자는 런타임 시 이러한 변수를 확인합니다. 이렇게 하면 보안 인증 정보 및 기타 비밀이 일반 텍스트로 저장되는 것을 방지할 수 있습니다. 예제의 구성 공급자는 AWS Secrets Manager, Amazon S3 및 Systems Manager()에서 구성 파라미터를 검색할 수 있습니다SSM. 2단계에서는 구성하려는 서비스에 대한 민감한 정보의 저장 및 검색을 설정하는 방법을 확인할 수 있습니다.
고려 사항
Amazon MSK Connect와 함께 MSK 구성 공급자를 사용할 때는 다음 사항을 고려하세요.
구성 공급자를 사용할 때 IAM 서비스 실행 역할에 적절한 권한을 할당합니다.
작업자 구성에서 구성 공급자를 정의하고 커넥터 구성에서 해당 구현을 정의합니다.
-
플러그인이 해당 값을 암호로 정의하지 않은 경우 커넥터 로그에 민감한 구성 값이 표시될 수 있습니다. Kafka Connect는 정의되지 않은 구성 값을 기타 일반 텍스트 값과 동일하게 취급합니다. 자세한 내용은 커넥터 로그에 비밀이 표시되지 않도록 하기을 참조하십시오.
-
기본적으로 MSK Connect는 커넥터가 구성 공급자를 사용할 때 커넥터를 자주 다시 시작합니다. 이러한 다시 시작 동작을 해제하려면 커넥터 구성에서
config.action.reload
값을none
으로 설정하면 됩니다.
사용자 지정 플러그인을 생성하고 S3에 업로드
사용자 지정 플러그인을 생성하려면 로컬 시스템에서 다음 명령을 실행 msk-config-provider하여 커넥터와 가 포함된 zip 파일을 생성합니다.
터미널 창과 Debezium을 커넥터로 사용하여 사용자 지정 플러그인을 만들려면 다음을 수행합니다.
를 AWS CLI 사용하여 AWS S3 버킷에 액세스할 수 있는 보안 인증 정보를 사용하여 슈퍼 사용자로 명령을 실행합니다. 설치 및 설정에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서의 시작하기 AWS CLI를 AWS CLI참조하세요. Amazon S3에서 를 AWS CLI 사용하는 방법에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서의 에서 Amazon S3를 사용하여 AWS CLI 사용을 참조하세요.
-
터미널 창에서 다음 명령을 사용하여 Workspace에
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
다음 명령을 사용하여
custom-plugin
폴더에서 다운로드한 gzip 파일의 압축을 풉니다.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
다음 명령을 사용하여
custom-plugin
폴더에서 다운로드한 zip 파일의 압축을 풉니다.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 연결 섹션에서 사용자 지정 플러그인을 선택한 다음 사용자 지정 플러그인 생성을 선택하고 s3:<를 찾습니다.
S3_URI_BUCKET_LOCATION
> 방금 업로드한 사용자 지정 플러그인 ZIP 파일을 선택하는 S3 버킷입니다.플러그인 이름으로
debezium-custom-plugin
을 입력합니다. 설명을 입력하고 사용자 지정 플러그인 생성을 선택합니다(선택 사항).
다른 공급자에 대한 파라미터 및 권한 구성
다음 3가지 서비스에서 파라미터 값을 구성할 수 있습니다.
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에서 를 선택합니다.
커넥터 생성에 나와 있는 지침의 나머지 단계를 수행합니다.