As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Secrets Manager para proteção de dados com o EMR Sem Servidor
AWS Secrets Manager é um serviço de armazenamento secreto que você pode usar para proteger credenciais de banco de dados, chaves de API e outras informações secretas. Em Seguida, no seu código, é possível substituir credenciais codificadas por uma chamada de API para o Secrets Manager. Isso ajuda a garantir que o segredo não possa ser comprometido por alguém que esteja examinando seu código, pois o segredo não está ali. Para obter uma visão geral, consulte o Guia do usuário do AWS Secrets Manager.
O Secrets Manager criptografa segredos usando AWS Key Management Service chaves. Para obter mais informações, consulte Criptografia e descriptografia de segredos no Guia do usuário do AWS Secrets Manager .
Você pode configurar o Secrets Manager para alterar automaticamente os segredos para você de acordo com a programação que você especificar. Isso permite substituir segredos de longo prazo por outros de curto prazo, ajudando a reduzir de maneira significativa o risco de comprometimento. Para obter mais informações, consulte Alternar os segredos do AWS Secrets Manager no Guia do usuário do AWS Secrets Manager .
O Amazon EMR Serverless se integra AWS Secrets Manager para que você possa armazenar seus dados no Secrets Manager e usar o ID secreto em suas configurações.
Como o EMR Sem Servidor usa segredos
Quando você armazena seus dados no Secrets Manager e usa o ID secreto em suas configurações para o EMR Serverless, você não passa dados de configuração confidenciais para o EMR Serverless em texto simples e os expõe ao ambiente externo. APIs Se você indicar que um par de chave-valor contém o ID do segredo armazenado no Secrets Manager, o EMR Sem Servidor recuperará o segredo ao enviar dados de configuração aos trabalhadores para execução de trabalhos.
Para indicar que um par de chave-valor de uma configuração contém uma referência a um segredo armazenado no Secrets Manager, adicione a anotação EMR.secret@
ao valor da configuração. Para qualquer propriedade de configuração com anotação de ID secreta, o EMR Sem Servidor chama o Secrets Manager e resolve o segredo no momento da execução do trabalho.
Como criar um segredo
Para criar um segredo, siga as etapas em Criar um AWS Secrets Manager segredo no Guia do AWS Secrets Manager usuário. Na Etapa 3, escolha o campo Texto sem formatação para inserir o valor sigiloso.
Fornecimento de um segredo em uma classificação de configuração
Os exemplos a seguir mostram como fornecer um segredo em uma classificação de configuração em StartJobRun
. Se você quiser configurar classificações para o Secrets Manager no nível da aplicação, consulte Configuração padrão de aplicações do EMR Sem Servidor.
Nos exemplos, substitua
pelo nome do segredo a ser recuperado. Inclua o hífen, seguido pelos seis caracteres que o Secrets Manager adiciona ao final do ARN secreto. Para obter mais informações, consulte Como criar um segredo.SecretName
Especifique referências secretas: Spark
exemplo — Especifique referências secretas na configuração externa da metastore do Hive para o Spark
aws emr-serverless start-job-run \ --application-id "
application-id
" \ --execution-role-arn "job-role-arn
" \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket
/scripts/spark-jdbc.py", "sparkSubmitParameters": "--jars s3://amzn-s3-demo-bucket
/mariadb-connector-java.jar --conf spark.hadoop.javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc.Driver --conf spark.hadoop.javax.jdo.option.ConnectionUserName=connection-user-name
--conf spark.hadoop.javax.jdo.option.ConnectionPassword=EMR.secret@SecretName
--conf spark.hadoop.javax.jdo.option.ConnectionURL=jdbc:mysql://db-host:db-port/db-name
--conf spark.driver.cores=2 --conf spark.executor.memory=10G --conf spark.driver.memory=6G --conf spark.executor.cores=4" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket
/spark/logs/" } } }'
exemplo — Especifique referências secretas para a configuração externa da metastore do Hive na classificação spark-defaults
.
{ "classification": "spark-defaults", "properties": { "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver" "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://
db-host:db-port/db-name
" "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name
" "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretName
", } }
Especifique referências secretas: Hive
exemplo — Especifique referências secretas na configuração externa da metastore do Hive para o Hive
aws emr-serverless start-job-run \ --application-id "
application-id
" \ --execution-role-arn "job-role-arn
" \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.exec.scratchdir=s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/scratch --hiveconf hive.metastore.warehouse.dir=s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/warehouse --hiveconf javax.jdo.option.ConnectionUserName=username
--hiveconf javax.jdo.option.ConnectionPassword=EMR.secret@SecretName
--hiveconf hive.metastore.client.factory.class=org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory --hiveconf javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc.Driver --hiveconf javax.jdo.option.ConnectionURL=jdbc:mysql://db-host:db-port/db-name
" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket
" } } }'
exemplo — Especifique referências secretas para a configuração externa da metastore do Hive na classificação hive-site
.
{ "classification": "hive-site", "properties": { "hive.metastore.client.factory.class": "org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionURL": "jdbc:mysql://
db-host:db-port/db-name
", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "EMR.secret@SecretName
" } }
Concessão de acesso ao EMR Sem Servidor para recuperar o segredo
Para permitir que o EMR Sem Servidor recupere o valor do segredo do Secrets Manager, adicione a instrução de política a seguir ao seu segredo ao criá-lo. Você deve criar o segredo com a chave do KMS gerenciada pelo cliente para que o EMR Sem Servidor leia o valor do segredo. Para obter mais informações, consulte Permissions for the KMS key no Guia do usuário do AWS Secrets Manager .
Na política a seguir, substitua
pelo ID da aplicação.applicationId
Política de recursos do segredo
Você deve incluir as permissões a seguir na política de recursos do segredo no AWS Secrets Manager para permitir que o EMR Sem Servidor recupere valores do segredo. Para garantir que somente uma aplicação específica possa recuperar esse segredo, você pode, opcionalmente, especificar o ID da aplicação do EMR Sem Servidor como uma condição na política.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Principal": { "Service": [ "emr-serverless.amazonaws.com" ] }, "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:emr-serverless:
Região da AWS
:aws_account_id
:/applications/applicationId
" } } } ] }
Crie seu segredo com a seguinte política para a chave gerenciada pelo cliente AWS Key Management Service (AWS KMS):
Política para chave gerenciada pelo cliente AWS KMS
{ "Sid": "Allow EMR Serverless to use the key for decrypting secrets", "Effect": "Allow", "Principal": { "Service": [ "emr-serverless.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.
Região da AWS
.amazonaws.com" } } }
Alternância do segredo
A alternância é quando você atualiza periodicamente um segredo. É possível configurar o AWS Secrets Manager para alternar automaticamente o segredo de acordo com uma programação que você especificar. Dessa forma, é possível substituir segredos de longo prazo por segredos de curto prazo. Isso ajuda a reduzir o risco de comprometimento. O EMR Sem Servidor recupera o valor do segredo de uma configuração anotada quando o trabalho passa para um estado de execução. Se você ou um processo atualizar o valor do segredo no Secrets Manager, você deverá enviar um novo trabalho para que ele possa buscar o valor atualizado.
nota
Os trabalhos que já estão em execução não podem buscar um valor de segredo atualizado. Isso pode resultar em falha no trabalho.