

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

# Secrets Manager untuk perlindungan data dengan EMR Serverless
<a name="secrets-manager"></a>

AWS Secrets Manager adalah layanan penyimpanan rahasia untuk melindungi kredensi database, kunci API, dan informasi rahasia lainnya. Kemudian dalam kode Anda, ganti kredensi hardcode dengan panggilan API ke Secrets Manager. Ini membantu memastikan bahwa rahasia tidak dapat dikompromikan oleh seseorang yang memeriksa kode Anda, karena rahasianya tidak ada. Untuk ikhtisar, lihat [Panduan AWS Secrets Manager Pengguna](https://docs.aws.amazon.com/secretsmanager/latest/userguide).

Secrets Manager mengenkripsi rahasia menggunakan AWS Key Management Service kunci. Untuk informasi selengkapnya, lihat [Enkripsi rahasia dan dekripsi](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html) di *AWS Secrets Manager Panduan Pengguna*.

Anda dapat mengonfigurasi Secrets Manager untuk secara otomatis memutar rahasia untuk Anda sesuai dengan jadwal yang Anda tentukan. Ini memungkinkan Anda mengganti rahasia jangka panjang dengan rahasia jangka pendek, yang membantu mengurangi risiko kompromi secara signifikan. Untuk informasi selengkapnya, lihat [Putar AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) di *Panduan AWS Secrets Manager Pengguna*.

Amazon EMR Serverless terintegrasi dengan AWS Secrets Manager sehingga Anda dapat menyimpan data Anda di Secrets Manager dan menggunakan ID rahasia dalam konfigurasi Anda.

## Bagaimana EMR Serverless menggunakan rahasia
<a name="secrets-manager-how"></a>

Ketika Anda menyimpan data Anda di Secrets Manager dan menggunakan ID rahasia dalam konfigurasi untuk EMR Serverless, Anda tidak meneruskan data konfigurasi sensitif ke EMR Serverless dalam teks biasa dan mengeksposnya ke eksternal. APIs Jika Anda menunjukkan bahwa pasangan kunci-nilai berisi ID rahasia untuk rahasia yang Anda simpan di Secrets Manager, EMR Serverless mengambil rahasia ketika mengirimkan data konfigurasi ke pekerja untuk menjalankan pekerjaan.

Untuk menunjukkan bahwa pasangan kunci-nilai untuk konfigurasi berisi referensi ke rahasia yang disimpan di Secrets Manager, tambahkan `EMR.secret@` anotasi ke nilai konfigurasi. Untuk properti konfigurasi apa pun dengan anotasi Id rahasia, EMR Serverless memanggil Secrets Manager dan menyelesaikan rahasia pada saat eksekusi pekerjaan.

## Cara membuat rahasia
<a name="secrets-manager-create"></a>

Untuk membuat rahasia, ikuti langkah-langkah di [Buat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*. Pada **Langkah 3**, pilih bidang **Plaintext** untuk memasukkan nilai sensitif Anda.

## Berikan rahasia dalam klasifikasi konfigurasi
<a name="secrets-manager-examples"></a>

Contoh berikut menunjukkan bagaimana memberikan rahasia dalam klasifikasi konfigurasi di`StartJobRun`. Jika Anda ingin mengonfigurasi klasifikasi untuk Secrets Manager di tingkat aplikasi, lihat. [Konfigurasi aplikasi default untuk EMR Tanpa Server](default-configs.md)

Dalam contoh, ganti `SecretName` dengan nama rahasia untuk diambil. Untuk informasi lebih lanjut, lihat[Cara membuat rahasia](#secrets-manager-create).

**Topics**
+ [Tentukan referensi rahasia - Spark](#secrets-manager-examples-spark)
+ [Tentukan referensi rahasia - Sarang](#secrets-manager-examples-hive)

### Tentukan referensi rahasia - Spark
<a name="secrets-manager-examples-spark"></a>

**Example — Tentukan referensi rahasia dalam konfigurasi metastore Hive eksternal untuk 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/"
        }
    }
}'
```

**Example — Tentukan referensi rahasia untuk konfigurasi metastore Hive eksternal dalam klasifikasi `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",
        }
    }
```

### Tentukan referensi rahasia - Sarang
<a name="secrets-manager-examples-hive"></a>

**Example — Tentukan referensi rahasia dalam konfigurasi metastore Hive eksternal untuk 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"
        }
    }
}'
```

**Example — Tentukan referensi rahasia untuk konfigurasi metastore Hive eksternal dalam klasifikasi `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"
    }
}
```

## Berikan akses kepada EMR Serverless untuk mengambil rahasianya
<a name="secrets-manager-permission"></a>

Untuk memungkinkan EMR Tanpa Server mengambil nilai rahasia dari Secrets Manager, tambahkan pernyataan kebijakan berikut ke rahasia Anda saat Anda membuatnya. Anda harus membuat rahasia Anda dengan kunci KMS yang dikelola pelanggan untuk EMR Tanpa Server untuk membaca nilai rahasia. Untuk informasi selengkapnya, lihat [Izin untuk kunci KMS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-authz) di *AWS Secrets Manager Panduan Pengguna*.

Dalam kebijakan berikut, ganti `applicationId` dengan ID untuk aplikasi Anda.

**Kebijakan sumber daya untuk rahasia**

Anda harus menyertakan izin berikut dalam kebijakan sumber daya untuk rahasia AWS Secrets Manager agar EMR Tanpa Server dapat mengambil nilai rahasia. Untuk memastikan bahwa hanya aplikasi tertentu yang dapat mengambil rahasia ini, Anda dapat secara opsional menentukan ID aplikasi EMR Tanpa Server sebagai syarat dalam kebijakan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceArn": "arn:aws:emr-serverless:*:123456789012:/applications/*"
        }
      },
      "Sid": "AllowSECRETSMANAGERGetsecretvalue"
    }
  ]
}
```

------

Buat rahasia Anda dengan kebijakan berikut untuk kunci yang dikelola pelanggan AWS Key Management Service (AWS KMS):

**Kebijakan untuk kunci yang dikelola pelanggan 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.Wilayah AWS.amazonaws.com"
        }
    }
}
```

## Memutar rahasianya
<a name="secrets-manager-rotate"></a>

*Rotasi* adalah saat Anda memperbarui rahasia secara berkala. Anda dapat mengonfigurasi AWS Secrets Manager untuk secara otomatis memutar rahasia untuk Anda pada jadwal yang Anda tentukan. Dengan cara ini, Anda dapat mengganti rahasia jangka panjang dengan rahasia jangka pendek. Ini membantu mengurangi risiko kompromi. EMR Tanpa Server mengambil nilai rahasia dari konfigurasi beranotasi saat pekerjaan bertransisi ke status berjalan. Jika Anda atau proses memperbarui nilai rahasia di Secrets Manager, Anda harus mengirimkan pekerjaan baru sehingga pekerjaan dapat mengambil nilai yang diperbarui. 

**catatan**  
Pekerjaan yang sudah dalam status berjalan tidak dapat mengambil nilai rahasia yang diperbarui. Hal ini dapat mengakibatkan kegagalan pekerjaan.