Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Secrets Manager für Datenschutz mit EMR Serverless
AWS Secrets Manager ist ein geheimer Speicherdienst, mit dem Sie Datenbankanmeldedaten, API-Schlüssel und andere geheime Informationen schützen können. Dann können Sie in Ihrem Code hartcodierte Anmeldeinformationen durch einen API-Aufruf an Secrets Manager ersetzen. Auf diese Weise wird sichergestellt, dass das Geheimnis nicht von jemandem kompromittiert werden kann, der Ihren Code untersucht, da das Geheimnis nicht vorhanden ist. Eine Übersicht finden Sie im AWS Secrets Manager -Benutzerhandbuch.
Secrets Manager verschlüsselt Geheimnisse mithilfe von AWS Key Management Service Schlüsseln. Weitere Informationen finden Sie unter Secret Ver- und Entschlüsselung im AWS Secrets Manager Benutzerhandbuch.
Sie können Secrets Manager so konfigurieren, dass Secrets automatisch nach einem von Ihnen angegebenen Zeitplan für Sie rotiert werden. So können Sie Secrets mit langer Einsatzdauer durch Secrets mit kurzer Einsatzdauer ersetzen und damit das Risiko einer Kompromittierung erheblich verringern. Weitere Informationen finden Sie im AWS Secrets Manager Benutzerhandbuch unter Rotation von AWS Secrets Manager Geheimnissen.
Amazon EMR Serverless lässt sich integrieren, AWS Secrets Manager sodass Sie Ihre Daten in Secrets Manager speichern und die geheime ID in Ihren Konfigurationen verwenden können.
So verwendet EMR Serverless Secrets
Wenn Sie Ihre Daten in Secrets Manager speichern und die geheime ID in Ihren Konfigurationen für EMR Serverless verwenden, geben Sie vertrauliche Konfigurationsdaten nicht im Klartext an EMR Serverless weiter und stellen sie extern zur Verfügung. APIs Wenn Sie angeben, dass ein Schlüssel-Wert-Paar eine geheime ID für ein Geheimnis enthält, das Sie in Secrets Manager gespeichert haben, ruft EMR Serverless das Geheimnis ab, wenn es Konfigurationsdaten an Worker sendet, um Jobs auszuführen.
Um anzugeben, dass ein Schlüssel-Wert-Paar für eine Konfiguration einen Verweis auf ein in Secrets Manager gespeichertes Geheimnis enthält, fügen Sie die EMR.secret@
Anmerkung zum Konfigurationswert hinzu. Für jede Konfigurationseigenschaft mit geheimer ID-Anmerkung ruft EMR Serverless Secrets Manager auf und löst das Geheimnis zum Zeitpunkt der Jobausführung auf.
Wie erstellt man ein Geheimnis
Um ein Geheimnis zu erstellen, folgen Sie den Schritten unter Ein AWS Secrets Manager Geheimnis erstellen im AWS Secrets Manager Benutzerhandbuch. Wählen Sie in Schritt 3 das Feld Klartext aus, um Ihren vertraulichen Wert einzugeben.
Geben Sie ein Geheimnis in einer Konfigurationsklassifizierung ein
Die folgenden Beispiele zeigen, wie ein Geheimnis in einer Konfigurationsklassifizierung unter angegeben wird. StartJobRun
Wenn Sie Klassifizierungen für Secrets Manager auf Anwendungsebene konfigurieren möchten, finden Sie weitere Informationen unterStandardanwendungskonfiguration für EMR Serverless.
Ersetzen Sie es in den Beispielen
durch den Namen des abzurufenden Geheimnisses. Fügen Sie den Bindestrich ein, gefolgt von den sechs Zeichen, die Secrets Manager am Ende des geheimen ARN hinzufügt. Weitere Informationen finden Sie unter Wie erstellt man ein Geheimnis.SecretName
Geben Sie geheime Referenzen an — Spark
Beispiel — Geben Sie geheime Referenzen in der externen Hive-Metastore-Konfiguration für Spark an
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/" } } }'
Beispiel — Geben Sie geheime Referenzen für die externe Hive-Metastore-Konfiguration in der Klassifizierung an 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
", } }
Geben Sie geheime Referenzen an — Hive
Beispiel — Geben Sie geheime Referenzen in der externen Hive-Metastore-Konfiguration für Hive an
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
" } } }'
Beispiel — Geben Sie geheime Referenzen für die externe Hive-Metastore-Konfiguration in der Klassifizierung an 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
" } }
Gewähren Sie EMR Serverless Zugriff, um das Geheimnis abzurufen
Damit EMR Serverless den geheimen Wert aus Secrets Manager abrufen kann, fügen Sie Ihrem Secret bei der Erstellung die folgende Richtlinienanweisung hinzu. Sie müssen Ihr Geheimnis mit dem vom Kunden verwalteten KMS-Schlüssel erstellen, damit EMR Serverless den geheimen Wert lesen kann. Weitere Informationen finden Sie unter Berechtigungen für den KMS-Schlüssel im AWS Secrets Manager -Benutzerhandbuch.
Ersetzen Sie es in der folgenden Richtlinie
durch die ID für Ihre Anwendung.applicationId
Ressourcenrichtlinie für das Geheimnis
Sie müssen die folgenden Berechtigungen in die Ressourcenrichtlinie für das Secret in aufnehmen AWS Secrets Manager , damit EMR Serverless geheime Werte abrufen kann. Um sicherzustellen, dass nur eine bestimmte Anwendung dieses Geheimnis abrufen kann, können Sie optional die EMR Serverless Application ID als Bedingung in der Richtlinie angeben.
{ "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:
AWS-Region
:aws_account_id
:/applications/applicationId
" } } } ] }
Erstellen Sie Ihr Geheimnis mit der folgenden Richtlinie für den vom Kunden verwalteten Schlüssel AWS Key Management Service ()AWS KMS:
Richtlinie für den vom Kunden verwalteten Schlüssel 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.
AWS-Region
.amazonaws.com" } } }
Das Geheimnis rotieren
Rotation bedeutet, dass Sie ein Geheimnis regelmäßig aktualisieren. Sie können so konfigurieren AWS Secrets Manager , dass das Geheimnis nach einem von Ihnen festgelegten Zeitplan automatisch für Sie rotiert wird. Auf diese Weise können Sie langfristige Geheimnisse durch kurzfristige ersetzen. Dies trägt dazu bei, das Risiko von Kompromissen zu verringern. EMR Serverless ruft den geheimen Wert aus einer mit Anmerkungen versehenen Konfiguration ab, wenn der Job in den Status Running übergeht. Wenn Sie oder ein Prozess den geheimen Wert in Secrets Manager aktualisieren, müssen Sie einen neuen Job einreichen, damit der Job den aktualisierten Wert abrufen kann.
Anmerkung
Jobs, die sich bereits im Status Running befinden, können keinen aktualisierten geheimen Wert abrufen. Dies kann zum Fehlschlagen des Auftrags führen.