

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

# Gunakan AWS Secrets Manager rahasia di Amazon Elastic Kubernetes Service
<a name="integrate_eks"></a>

Untuk menampilkan secret from AWS Secrets Manager (ASCP) sebagai file yang dipasang di Amazon EKS Pods, Anda dapat menggunakan AWS Secrets and Configuration Provider untuk Kubernetes Secrets Store CSI Driver. ASCP bekerja dengan Amazon Elastic Kubernetes Service 1.17\$1 yang menjalankan grup node Amazon EC2. AWS Fargate grup node tidak didukung. Dengan ASCP, Anda dapat menyimpan dan mengelola rahasia Anda di Secrets Manager dan kemudian mengambilnya melalui beban kerja Anda yang berjalan di Amazon EKS. Jika rahasia Anda berisi beberapa pasangan nilai kunci dalam format JSON, Anda dapat memilih mana yang akan dipasang di Amazon EKS. ASCP menggunakan JMESPath sintaks untuk menanyakan pasangan kunci-nilai dalam rahasia Anda. ASCP juga bekerja dengan parameter Parameter Store. ASCP menawarkan dua metode otentikasi dengan Amazon EKS Pendekatan pertama menggunakan Peran IAM untuk Akun Layanan (IRSA). Pendekatan kedua menggunakan Pod Identities. Setiap pendekatan memiliki manfaat dan kasus penggunaannya.

## ASCP dengan Peran IAM untuk Akun Layanan (IRSA)
<a name="csi_driver_overview"></a>

ASCP dengan Peran IAM untuk Akun Layanan (IRSA) memungkinkan Anda memasang rahasia dari file AWS Secrets Manager sebagai di Pod Amazon EKS Anda. Pendekatan ini cocok ketika:
+ Anda perlu memasang rahasia sebagai file di Pod Anda.
+ Anda menggunakan Amazon EKS versi 1.17 atau yang lebih baru dengan grup node Amazon EC2.
+ Anda ingin mengambil pasangan nilai kunci tertentu dari rahasia berformat JSON.

Untuk informasi selengkapnya, lihat [Gunakan AWS Rahasia dan Penyedia Konfigurasi CSI dengan Peran IAM untuk Akun Layanan (IRSA)](integrating_ascp_irsa.md).

## ASCP dengan Identitas Pod
<a name="pod_identity_overview"></a>

Metode ASCP dengan Pod Identity meningkatkan keamanan dan menyederhanakan konfigurasi untuk mengakses rahasia di Amazon EKS. Pendekatan ini bermanfaat ketika:
+ Anda memerlukan manajemen izin yang lebih terperinci di tingkat Pod.
+ Anda menggunakan Amazon EKS versi 1.24 atau yang lebih baru.
+ Anda ingin meningkatkan kinerja dan skalabilitas.

Untuk informasi selengkapnya, lihat [Gunakan CSI Penyedia AWS Rahasia dan Konfigurasi dengan Pod Identity untuk Amazon EKS](ascp-pod-identity-integration.md).

## Memilih pendekatan yang tepat
<a name="comparison"></a>

Pertimbangkan faktor-faktor berikut ketika memutuskan antara ASCP dengan IRSA dan ASCP dengan Pod Identity:
+ Amazon EKSversion: Pod Identity membutuhkan Amazon EKS 1.24\$1, sedangkan driver CSI bekerja dengan Amazon EKS 1.17\$1.
+ Persyaratan keamanan: Pod Identity menawarkan kontrol yang lebih terperinci pada level Pod.
+ Kinerja: Pod Identity umumnya berkinerja lebih baik di lingkungan skala tinggi.
+ Kompleksitas: Pod Identity menyederhanakan penyiapan dengan menghilangkan kebutuhan akan akun layanan terpisah.

Pilih metode yang paling sesuai dengan kebutuhan spesifik Anda dan lingkungan Amazon EKS.

# Instal ASCP untuk Amazon EKS
<a name="ascp-eks-installation"></a>

Bagian ini menjelaskan cara menginstal Penyedia AWS Rahasia dan Konfigurasi untuk Amazon EKS. Dengan ASCP, Anda dapat memasang rahasia dari Secrets Manager dan parameter dari AWS Systems Manager sebagai file di Amazon EKS Pods.

## Prasyarat
<a name="prerequisites"></a>
+ Klaster Amazon EKS
  + Versi 1.24 atau yang lebih baru untuk Pod Identity
  + Versi 1.17 atau yang lebih baru untuk IRSA
+ Yang AWS CLI diinstal dan dikonfigurasi
+ kubectl diinstal dan dikonfigurasi untuk klaster Amazon EKS Anda
+ Helm (versi 3.0 atau yang lebih baru)

## Instal dan konfigurasikan ASCP
<a name="integrating_csi_driver_install"></a>

ASCP tersedia GitHub di repositori [secrets-store-csi-provider-aws](https://github.com/aws/secrets-store-csi-driver-provider-aws). Repo juga berisi contoh file YAMAL untuk membuat dan memasang rahasia. 

Selama instalasi, Anda dapat mengkonfigurasi ASCP untuk menggunakan titik akhir FIPS. Untuk daftar titik akhir, lihat[AWS Secrets Manager titik akhir](asm_access.md#endpoints).

**Untuk menginstal ASCP sebagai add-on EKS**

1. Instal `eksctl` ([petunjuk instalasi](https://docs.aws.amazon.com/eks/latest/eksctl/installation.html))

1. Jalankan perintah berikut untuk menginstal add-on dengan [konfigurasi default](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/charts/secrets-store-csi-driver-provider-aws/values.yaml):

   ```
   eksctl create addon --cluster <your_cluster> --name aws-secrets-store-csi-driver-provider
   ```

   Jika Anda ingin mengkonfigurasi add-on, jalankan perintah instalasi berikut sebagai gantinya:

   ```
   aws eks create-addon --cluster-name <your_cluster> --addon-name aws-secrets-store-csi-driver-provider --configuration-values 'file://path/to/config.yaml'
   ```

   File konfigurasi dapat berupa file YAMM atau JSON. Untuk melihat skema konfigurasi untuk add-on:

   1. Jalankan perintah berikut dan catat versi terbaru dari add-on:

      ```
      aws eks describe-addon-versions --addon-name aws-secrets-store-csi-driver-provider
      ```

   1. Jalankan perintah berikut untuk melihat skema konfigurasi add-on, ganti `<version>` dengan versi dari langkah sebelumnya:

      ```
      aws eks describe-addon-configuration --addon-name aws-secrets-store-csi-driver-provider --addon-version <version>
      ```

**Untuk menginstal ASCP dengan menggunakan Helm**

1. Untuk memastikan repo menunjuk ke grafik terbaru, gunakan `helm repo update.`

1. Instal bagan. Berikut ini adalah contoh `helm install` perintah:

   ```
   helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
   ```

   1. Untuk menggunakan endpoint FIPS, tambahkan tanda berikut: `--set useFipsEndpoint=true`

   1. Untuk mengonfigurasi pelambatan, tambahkan tanda berikut: `--set-json 'k8sThrottlingParams={"qps": "number of queries per second", "burst": "number of queries per second"}'`

   1. Jika Secrets Store CSI Driver sudah diinstal pada cluster Anda, tambahkan tanda berikut:`--set secrets-store-csi-driver.install=false`. Ini akan melewatkan menginstal Secrets Store CSI Driver sebagai dependensi.

**Untuk menginstal dengan menggunakan YAMAL di repo**
+ Gunakan perintah berikut.

  ```
  helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
  helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
  kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
  ```

## Verifikasi instalasi
<a name="verify-ascp-installations"></a>

Untuk memverifikasi instalasi kluster EKS Anda, driver Secrets Store CSI, dan plugin ASCP, ikuti langkah-langkah berikut:

1. Verifikasi kluster EKS:

   ```
   eksctl get cluster --name clusterName
   ```

   Perintah ini harus mengembalikan informasi tentang cluster Anda.

1. Verifikasi instalasi driver Secrets Store CSI:

   ```
   kubectl get pods -n kube-system -l app=secrets-store-csi-driver
   ```

   Anda akan melihat Pod berjalan dengan nama seperti`csi-secrets-store-secrets-store-csi-driver-xxx`.

1. Verifikasi instalasi plugin ASCP:

------
#### [ YAML installation ]

   ```
   $ kubectl get pods -n kube-system -l app=csi-secrets-store-provider-aws
   ```

   Contoh output:

   ```
   NAME                                     READY   STATUS    RESTARTS   AGE
   csi-secrets-store-provider-aws-12345      1/1     Running   0          2m
   ```

------
#### [ Helm installation ]

   ```
   $  kubectl get pods -n kube-system -l app=secrets-store-csi-driver-provider-aws
   ```

   Contoh output:

   ```
   NAME                                              READY   STATUS    RESTARTS   AGE
   secrets-provider-aws-secrets-store-csi-driver-provider-67890       1/1     Running   0          2m
   ```

------

   Anda akan melihat Pod di `Running` negara bagian.

Setelah menjalankan perintah ini, jika semuanya diatur dengan benar, Anda akan melihat semua komponen berjalan tanpa kesalahan. Jika mengalami masalah apa pun, Anda mungkin perlu memecahkan masalah dengan memeriksa log Pod tertentu yang mengalami masalah.

## Pemecahan masalah
<a name="troubleshooting"></a>

1. Untuk memeriksa log penyedia ASCP, jalankan:

   ```
   kubectl logs -n kube-system -l app=csi-secrets-store-provider-aws
   ```

1. Periksa status semua pod di `kube-system` namespace:

   ```
   kubectl -n kube-system get pods
   ```

   ```
   kubectl -n kube-system logs pod/PODID
   ```

   Semua Pod yang terkait dengan driver CSI dan ASCP harus berada dalam status 'Berjalan'.

1. Periksa versi driver CSI:

   ```
   kubectl get csidriver secrets-store.csi.k8s.io -o yaml
   ```

   Perintah ini harus mengembalikan informasi tentang driver CSI yang diinstal.

## Sumber daya tambahan
<a name="additional-resources"></a>

Untuk informasi selengkapnya tentang penggunaan ASCP dengan Amazon EKS, lihat sumber daya berikut:
+ [Menggunakan Pod Identity dengan Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [AWS Secrets Store CSI Driver di GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# Gunakan CSI Penyedia AWS Rahasia dan Konfigurasi dengan Pod Identity untuk Amazon EKS
<a name="ascp-pod-identity-integration"></a>

Integrasi AWS Secrets and Configuration Provider dengan Pod Identity Agent untuk Amazon Elastic Kubernetes Service memberikan peningkatan keamanan, konfigurasi yang disederhanakan, dan peningkatan kinerja untuk aplikasi yang berjalan di Amazon EKS. Pod Identity menyederhanakan autentikasi IAM untuk Amazon EKS saat mengambil rahasia dari Secrets Manager atau parameter dari Parameter Store. AWS Systems Manager 

Amazon EKS Pod Identity merampingkan proses konfigurasi izin IAM untuk aplikasi Kubernetes dengan mengizinkan izin diatur secara langsung melalui antarmuka Amazon EKS, mengurangi jumlah langkah dan menghilangkan kebutuhan untuk beralih antara Amazon EKS dan layanan IAM. Pod Identity memungkinkan penggunaan peran IAM tunggal di beberapa cluster tanpa memperbarui kebijakan kepercayaan dan mendukung [tag sesi peran](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags) untuk kontrol akses yang lebih terperinci. Pendekatan ini tidak hanya menyederhanakan manajemen kebijakan dengan mengizinkan penggunaan kembali kebijakan izin di seluruh peran tetapi juga meningkatkan keamanan dengan mengaktifkan akses ke AWS sumber daya berdasarkan tag yang cocok.

## Cara kerjanya
<a name="how-it-works"></a>

1. Pod Identity memberikan peran IAM ke Pod.

1. ASCP menggunakan peran ini untuk mengautentikasi dengan. Layanan AWS

1. Jika diotorisasi, ASCP mengambil rahasia yang diminta dan membuatnya tersedia untuk Pod.

Untuk informasi selengkapnya, lihat [Memahami cara kerja Identitas Pod Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-how-it-works.html) di *Panduan Pengguna Amazon EKS*.

## Prasyarat
<a name="prerequisites"></a>

**penting**  
Pod Identity hanya didukung untuk Amazon EKS di cloud. Ini tidak didukung untuk [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/), [Layanan OpenShift Red Hat di AWS](https://aws.amazon.com/rosa/), atau cluster Kubernetes yang dikelola sendiri di instans Amazon EC2.
+ Cluster Amazon EKS (versi 1.24 atau yang lebih baru)
+ Akses ke AWS CLI dan Amazon EKS cluster melalui `kubectl`
+ Akses ke dua Akun AWS (untuk akses lintas akun)

## Instal Agen Identitas Pod Amazon EKS
<a name="install-pod-identity-agent"></a>

Untuk menggunakan Pod Identity dengan klaster Anda, Anda harus menginstal add-on Amazon EKS Pod Identity Agent.

**Untuk menginstal Agen Identitas Pod**
+ Instal add-on Pod Identity Agent di klaster Anda:

  ```
  eksctl create addon \
    --name eks-pod-identity-agent \
    --cluster clusterName \
    --region region
  ```

## Mengatur ASCP dengan Pod Identity
<a name="pod-identity-setup"></a>

1. Buat kebijakan izin yang memberikan `secretsmanager:GetSecretValue` dan `secretsmanager:DescribeSecret` mengizinkan rahasia yang perlu diakses oleh Pod. Untuk contoh kebijakan, lihat [Contoh: Izin untuk membaca dan menggambarkan rahasia individu](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Buat peran IAM yang dapat diasumsikan oleh prinsipal layanan Amazon EKS untuk Pod Identity:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "pods.eks.amazonaws.com"
           },
           "Action": [
             "sts:AssumeRole",
             "sts:TagSession"
           ]
         }
       ]
     }
   ```

------

   Lampirkan kebijakan IAM ke peran:

   ```
   aws iam attach-role-policy \
     --role-name MY_ROLE \
     --policy-arn POLICY_ARN
   ```

1. Buat asosiasi Pod Identity. Sebagai contoh, lihat [Membuat asosiasi Identitas Pod](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html#pod-id-association-create) di *Panduan Pengguna Amazon EKS*

1. Buat `SecretProviderClass` yang menentukan rahasia mana yang akan dipasang di Pod:

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml
   ```

   Perbedaan utama `SecretProviderClass` antara IRSA dan Pod Identity adalah parameter `usePodIdentity` opsional. Ini adalah bidang opsional yang menentukan pendekatan otentikasi. Ketika tidak ditentukan, default menggunakan Peran IAM untuk Akun Layanan (IRSA).
   + Untuk menggunakan EKS Pod Identity, gunakan salah satu dari nilai-nilai ini:`"true", "True", "TRUE", "t", "T"`.
   + Untuk secara eksplisit menggunakan IRSA, atur ke salah satu nilai ini:. `"false", "False", "FALSE", "f", or "F"`

1. Terapkan Pod yang memasang rahasia di bawah: `/mnt/secrets-store`

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
   ```

1. Jika Anda menggunakan kluster Amazon EKS pribadi, pastikan VPC tempat cluster berada memiliki AWS STS titik akhir. *Untuk informasi tentang membuat titik akhir, lihat Titik akhir [VPC Antarmuka](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) di AWS Identity and Access Management Panduan Pengguna.*

### Verifikasi pemasangan rahasia
<a name="verify-secret-mount"></a>

Untuk memverifikasi bahwa rahasia sudah terpasang dengan benar, jalankan perintah berikut:

```
kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MySecret
```

**Untuk mengatur Amazon EKS Pod Identity untuk mengakses rahasia di Secrets Manager**

1. Buat kebijakan izin yang memberikan `secretsmanager:GetSecretValue` dan `secretsmanager:DescribeSecret` mengizinkan rahasia yang perlu diakses oleh Pod. Untuk contoh kebijakan, lihat [Contoh: Izin untuk membaca dan menggambarkan rahasia individu](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Buat rahasia di Secrets Manager, jika Anda belum memilikinya.

## Pemecahan Masalah
<a name="integrating_aspc_pod_trouble"></a>

Anda dapat melihat sebagian besar kesalahan dengan menjelaskan penerapan Pod.

**Untuk melihat pesan galat untuk penampung Anda**

1. Dapatkan daftar nama Pod dengan perintah berikut. Jika Anda tidak menggunakan namespace default, gunakan. `-n NAMESPACE`

   ```
   kubectl get pods
   ```

1. Untuk mendeskripsikan Pod, dalam perintah berikut, *PODID* gunakan ID Pod dari Pod yang Anda temukan di langkah sebelumnya. Jika Anda tidak menggunakan namespace default, gunakan. `-n NAMESPACE`

   ```
   kubectl describe pod/PODID
   ```

**Untuk melihat kesalahan untuk ASCP**
+ Untuk menemukan informasi selengkapnya di log penyedia, dalam perintah berikut, *PODID* gunakan ID Pod *csi-secrets-store-provider-aws*.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs pod/PODID
  ```

# Gunakan AWS Rahasia dan Penyedia Konfigurasi CSI dengan Peran IAM untuk Akun Layanan (IRSA)
<a name="integrating_ascp_irsa"></a>

**Topics**
+ [Prasyarat](#prerequisites)
+ [Mengatur kontrol akses](#integrating_ascp_irsa_access)
+ [Identifikasi rahasia mana yang akan dipasang](#integrating_ascp_irsa_mount)
+ [Pemecahan Masalah](#integrating_ascp_irsa_trouble)

## Prasyarat
<a name="prerequisites"></a>
+ Cluster Amazon EKS (versi 1.17 atau yang lebih baru)
+ Akses ke AWS CLI dan Amazon EKS cluster melalui `kubectl`

## Mengatur kontrol akses
<a name="integrating_ascp_irsa_access"></a>

ASCP mengambil Amazon EKS Pod Identity dan menukarnya dengan peran IAM. Anda menetapkan izin dalam kebijakan IAM untuk peran IAM tersebut. Ketika ASCP mengasumsikan peran IAM, ia mendapat akses ke rahasia yang Anda otorisasi. Kontainer lain tidak dapat mengakses rahasia kecuali Anda juga mengaitkannya dengan peran IAM. 

**Untuk memberikan Amazon EKS Pod akses ke rahasia di Secrets Manager**

1. Buat kebijakan izin yang memberikan `secretsmanager:GetSecretValue` dan `secretsmanager:DescribeSecret` mengizinkan rahasia yang perlu diakses oleh Pod. Untuk contoh kebijakan, lihat [Contoh: Izin untuk membaca dan menggambarkan rahasia individu](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Buat penyedia OpenID Connect (OIDC) IAM untuk cluster jika Anda belum memilikinya. Untuk informasi selengkapnya, lihat [Membuat penyedia IAM OIDC untuk klaster Anda di Panduan](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) Pengguna *Amazon EKS*.

1. Buat [peran IAM untuk akun layanan](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) dan lampirkan kebijakan ke dalamnya. Untuk informasi selengkapnya, lihat [Membuat peran IAM untuk akun layanan](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) di *Panduan Pengguna Amazon EKS*.

1. Jika Anda menggunakan kluster Amazon EKS pribadi, pastikan VPC tempat cluster berada memiliki AWS STS titik akhir. *Untuk informasi tentang membuat titik akhir, lihat Titik akhir [VPC Antarmuka](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) di AWS Identity and Access Management Panduan Pengguna.*

## Identifikasi rahasia mana yang akan dipasang
<a name="integrating_ascp_irsa_mount"></a>

Untuk menentukan rahasia mana yang dipasang ASCP di Amazon EKS sebagai file di sistem file, Anda membuat file YAMAL. [SecretProviderClass](ascp-examples.md#ascp-examples-secretproviderclass) `SecretProviderClass`Daftar rahasia untuk dipasang dan nama file untuk dipasang sebagai. `SecretProviderClass`Harus berada di namespace yang sama dengan Amazon EKS Pod yang direferensikannya.

### Pasang rahasia sebagai file
<a name="mount-secrets"></a>

[Petunjuk berikut menunjukkan cara memasang rahasia sebagai file menggunakan contoh file YAML.yaml [ExampleSecretProviderClassdan.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleSecretProviderClass-IRSA.yaml). ExampleDeployment](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleDeployment-IRSA.yaml)

**Untuk memasang rahasia di Amazon EKS**

1. Terapkan `SecretProviderClass` ke Pod:

   ```
   kubectl apply -f ExampleSecretProviderClass.yaml
   ```

1. Menerapkan Pod Anda:

   ```
   kubectl apply -f ExampleDeployment.yaml
   ```

1. ASCP memasang file.

## Pemecahan Masalah
<a name="integrating_ascp_irsa_trouble"></a>

Anda dapat melihat sebagian besar kesalahan dengan menjelaskan penerapan Pod. 

**Untuk melihat pesan galat untuk penampung**

1. Dapatkan daftar nama Pod dengan perintah berikut. Jika Anda tidak menggunakan namespace default, gunakan. `-n nameSpace`

   ```
   kubectl get pods
   ```

1. Untuk mendeskripsikan Pod, dalam perintah berikut, *podId* gunakan ID Pod dari Pod yang Anda temukan di langkah sebelumnya. Jika Anda tidak menggunakan namespace default, gunakan. `-n nameSpace`

   ```
   kubectl describe pod/podId
   ```

**Untuk melihat kesalahan untuk ASCP**
+ Untuk menemukan informasi selengkapnya di log penyedia, dalam perintah berikut, *podId* gunakan ID Pod *csi-secrets-store-provider-aws*.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs Pod/podId
  ```
+ 

**Verifikasi bahwa `SecretProviderClass` CRD diinstal:**

  ```
  kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io
  ```

  Perintah ini harus mengembalikan informasi tentang definisi sumber daya `SecretProviderClass` khusus.
+ 

**Verifikasi bahwa SecretProviderClass objek telah dibuat.**

  ```
  kubectl get secretproviderclass SecretProviderClassName -o yaml
  ```

# AWS Contoh kode Penyedia Rahasia dan Konfigurasi
<a name="ascp-examples"></a>

## Contoh otentikasi ASCP dan kontrol akses
<a name="ascp-auth-access-examples"></a>

### Contoh: Kebijakan IAM yang mengizinkan layanan Amazon EKS Pod Identity (pods.eks.amazonaws.com) untuk mengambil peran dan menandai sesi:
<a name="w2aac19c17c18b5b3"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

------

## SecretProviderClass
<a name="ascp-examples-secretproviderclass"></a>

Anda menggunakan YAMAL untuk menjelaskan rahasia mana yang akan dipasang di Amazon EKS menggunakan ASCP. Sebagai contoh, lihat [SecretProviderClass penggunaan](#ascp-scenarios-secretproviderclass).

### SecretProviderClass Struktur YAMAL
<a name="w2aac19c17c18c25b5"></a>

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
   name: name
spec:
  provider: aws
  parameters:
    region:
    failoverRegion:
    pathTranslation:
    usePodIdentity:
    preferredAddressType:
    objects:
```

Bidang parameter berisi rincian permintaan pemasangan:

**region**  
(Opsional) Wilayah AWS Rahasianya. Jika Anda tidak menggunakan bidang ini, ASCP mencari Region dari anotasi pada node. Pencarian ini menambahkan overhead ke permintaan mount, jadi sebaiknya Anda menyediakan Region untuk klaster yang menggunakan Pod dalam jumlah besar.  
Jika Anda juga menentukan`failoverRegion`, ASCP mencoba untuk mengambil rahasia dari kedua Wilayah. Jika salah satu Wilayah mengembalikan kesalahan 4xx, misalnya untuk masalah otentikasi, ASCP tidak memasang salah satu rahasia. Jika rahasia berhasil diambil`region`, maka ASCP memasang nilai rahasia itu. Jika rahasia tidak berhasil diambil dari`region`, tetapi berhasil diambil dari`failoverRegion`, maka ASCP memasang nilai rahasia itu.

**FailOverRegion**  
(Opsional) Jika Anda menyertakan bidang ini, ASCP mencoba mengambil rahasia dari Wilayah yang ditentukan dalam `region` dan bidang ini. Jika salah satu Wilayah mengembalikan kesalahan 4xx, misalnya untuk masalah otentikasi, ASCP tidak memasang salah satu rahasia. Jika rahasia berhasil diambil`region`, maka ASCP memasang nilai rahasia itu. Jika rahasia tidak berhasil diambil dari`region`, tetapi berhasil diambil dari`failoverRegion`, maka ASCP memasang nilai rahasia itu. Untuk contoh cara menggunakan bidang ini, lihat[Kegagalan rahasia Multi-Wilayah](#multi-region-failover).

**PathTranslation**  
(Opsional) Karakter substitusi tunggal untuk digunakan jika nama file di Amazon EKS akan berisi karakter pemisah jalur, seperti garis miring (/) di Linux. ASCP tidak dapat membuat file yang dipasang yang berisi karakter pemisah jalur. Sebagai gantinya, ASCP menggantikan karakter pemisah jalur dengan karakter yang berbeda. Jika Anda tidak menggunakan bidang ini, karakter pengganti adalah garis bawah (\$1), jadi misalnya, `My/Path/Secret` dipasang sebagai. `My_Path_Secret`   
Untuk mencegah substitusi karakter, masukkan string`False`.

**usePodIdentity**  
(Opsional) Menentukan pendekatan otentikasi. Ketika tidak ditentukan, default ke IAM Roles for Service Accounts (IRSA) (IRSA).  
+ Untuk menggunakan EKS Pod Identity, gunakan salah satu nilai berikut: `"true"` “`"True"`,`"TRUE"`,`"t"`,, atau`"T"`.
+ Untuk secara eksplisit menggunakan IRSA, atur ke salah satu nilai ini:`"false"`,,, `"False"` `"FALSE"``"f"`, atau `"F"` “=.

**preferredAddressType**  
(Opsional) Menentukan jenis alamat IP yang disukai untuk komunikasi endpoint Pod Identity Agent. Bidang ini hanya berlaku ketika menggunakan fitur EKS Pod Identity dan akan diabaikan saat menggunakan Peran IAM untuk Akun Layanan. Nilai tidak peka huruf besar/kecil. Nilai yang valid adalah:  
+ `"ipv4"`, `"IPv4"` “, atau `"IPV4"` — Paksa penggunaan titik IPv4 akhir Pod Identity Agent
+ `"ipv6"`,`"IPv6"`, atau `"IPV6"` — Paksa penggunaan titik IPv6 akhir Pod Identity Agent
+ tidak ditentukan - Gunakan pemilihan titik akhir otomatis, coba IPv4 titik akhir terlebih dahulu dan kembali ke titik IPv6 akhir jika gagal IPv4 

**objek**  
String yang berisi deklarasi YAMAL tentang rahasia yang akan dipasang. Sebaiknya gunakan karakter string atau pipe (\$1) multi-line YAMAL.    
**objectName**  
Wajib. Menentukan nama rahasia atau parameter yang akan diambil. Untuk Secrets Manager ini adalah [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters)parameter dan dapat berupa nama ramah atau ARN lengkap rahasia. Untuk SSM Parameter Store, ini adalah parameter dan dapat berupa nama atau ARN lengkap parameter. [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters)  
**objectType**  
Diperlukan jika Anda tidak menggunakan Secrets Manager ARN untuk. `objectName` Bisa salah satu `secretsmanager` atau`ssmparameter`.   
**Objectalias**  
(Opsional) Nama file rahasia di Amazon EKS Pod. Jika Anda tidak menentukan bidang ini, `objectName` muncul sebagai nama file.  
**FilePermission**  
(Opsional) String oktal 4 digit yang menentukan izin file untuk memasang rahasia. Jika Anda tidak menentukan bidang ini, itu akan default ke`"0644"`.   
**ObjectVersion**  
(Opsional) ID versi rahasia. Tidak disarankan karena Anda harus memperbarui ID versi setiap kali Anda memperbarui rahasia. Secara default versi terbaru digunakan. Jika Anda menyertakan a`failoverRegion`, bidang ini mewakili primer`objectVersion`.  
**objectVersionLabel**  
(Opsional) Alias untuk versi. Defaultnya adalah versi terbaru AWSCURRENT. Untuk informasi selengkapnya, lihat [Versi rahasia](whats-in-a-secret.md#term_version). Jika Anda menyertakan a`failoverRegion`, bidang ini mewakili primer`objectVersionLabel`.  
**JMESPath**  
(Opsional) Peta kunci dalam rahasia file yang akan dipasang di Amazon EKS. Untuk menggunakan bidang ini, nilai rahasia Anda harus dalam format JSON. Jika Anda menggunakan bidang ini, Anda harus menyertakan subbidang `path` dan`objectAlias`.    
**path**  
Kunci dari pasangan kunci-nilai di JSON dari nilai rahasia. Jika bidang berisi tanda hubung, gunakan tanda kutip tunggal untuk menghindarinya, misalnya: `path: '"hyphenated-path"'`  
**Objectalias**  
Nama file yang akan dipasang di Amazon EKS Pod. Jika bidang berisi tanda hubung, gunakan tanda kutip tunggal untuk menghindarinya, misalnya: `objectAlias: '"hyphenated-alias"'`  
**FilePermission**  
(Opsional) String oktal 4 digit yang menentukan izin file untuk memasang rahasia. Jika Anda tidak menentukan bidang ini, itu akan default ke izin file objek induk.   
**FailOverObject**  
(Opsional) Jika Anda menentukan bidang ini, ASCP mencoba untuk mengambil kedua rahasia yang ditentukan dalam primer `objectName` dan rahasia yang ditentukan dalam sub-bidang. `failoverObject` `objectName` Jika salah satu mengembalikan kesalahan 4xx, misalnya untuk masalah otentikasi, ASCP tidak memasang salah satu rahasia. Jika rahasia berhasil diambil dari primer`objectName`, maka ASCP memasang nilai rahasia itu. Jika rahasia tidak berhasil diambil dari primer`objectName`, tetapi berhasil diambil dari failover`objectName`, maka ASCP memasang nilai rahasia itu. Jika Anda menyertakan bidang ini, Anda harus menyertakan bidang tersebut`objectAlias`. Untuk contoh cara menggunakan bidang ini, lihat[Kegagalan ke rahasia yang berbeda](#failover-secret).  
Anda biasanya menggunakan bidang ini ketika rahasia failover bukan replika. Untuk contoh cara menentukan replika, lihat[Kegagalan rahasia Multi-Wilayah](#multi-region-failover).    
**objectName**  
Nama atau ARN lengkap dari rahasia failover. Jika Anda menggunakan ARN, Wilayah di ARN harus cocok dengan bidang. `failoverRegion`  
**ObjectVersion**  
(Opsional) ID versi rahasia. Harus cocok dengan yang utama`objectVersion`. Tidak disarankan karena Anda harus memperbarui ID versi setiap kali Anda memperbarui rahasia. Secara default versi terbaru digunakan.   
**objectVersionLabel**  
(Opsional) Alias untuk versi. Defaultnya adalah versi terbaru AWSCURRENT. Untuk informasi selengkapnya, lihat [Versi rahasia](whats-in-a-secret.md#term_version). 

### Buat SecretProviderClass konfigurasi dasar untuk memasang rahasia di Pod Amazon EKS Anda.
<a name="w2aac19c17c18c25c11"></a>

------
#### [ Pod Identity ]

SecretProviderClass untuk menggunakan rahasia di cluster Amazon EKS yang sama:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets-manager
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "mySecret"
        objectType: "secretsmanager"
    usePodIdentity: "true"
```

------
#### [ IRSA ]

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: deployment-aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
        - objectName: "MySecret"
          objectType: "secretsmanager"
```

------

### SecretProviderClass penggunaan
<a name="ascp-scenarios-secretproviderclass"></a>

Gunakan contoh ini untuk membuat SecretProviderClass konfigurasi untuk skenario yang berbeda.

#### Contoh: Pasang rahasia dengan nama atau ARN
<a name="mount-by-name-arn"></a>

Contoh ini menunjukkan cara memasang tiga jenis rahasia:
+ Rahasia yang ditentukan oleh ARN lengkap
+ Rahasia yang ditentukan oleh nama
+ Versi spesifik dari rahasia

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:secretsmanager:us-east-2:777788889999:secret:MySecret2-d4e5f6"
      - objectName: "MySecret3"
        objectType: "secretsmanager"
      - objectName: "MySecret4"
        objectType: "secretsmanager"
        objectVersionLabel: "AWSCURRENT"
```

#### Contoh: Pasang pasangan nilai kunci dari rahasia
<a name="mount-key-value-pairs"></a>

Contoh ini menunjukkan cara memasang pasangan nilai kunci tertentu dari rahasia berformat JSON:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:secretsmanager:us-east-2:777788889999:secret:MySecret-a1b2c3"
        jmesPath: 
            - path: username
              objectAlias: dbusername
            - path: password
              objectAlias: dbpassword
```

#### Contoh: Pasang rahasia dengan izin file
<a name="mount-by-permission"></a>

Contoh ini menunjukkan cara memasang rahasia dengan izin file tertentu

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "mySecret"
        objectType: "secretsmanager"
        filePermission: "0600"
        jmesPath: 
            - path: username
              objectAlias: dbusername
              filePermission: "0400"
```

#### Contoh: Contoh konfigurasi Failover
<a name="failover-examples"></a>

Contoh-contoh ini menunjukkan cara mengkonfigurasi failover untuk rahasia.

##### Kegagalan rahasia Multi-Wilayah
<a name="multi-region-failover"></a>

Contoh ini menunjukkan cara mengonfigurasi failover otomatis untuk rahasia yang direplikasi di beberapa Wilayah:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "MySecret"
```

##### Kegagalan ke rahasia yang berbeda
<a name="failover-secret"></a>

Contoh ini menunjukkan cara mengonfigurasi failover ke rahasia yang berbeda (bukan replika):

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "arn:aws:secretsmanager:us-east-1:777788889999:secret:MySecret-a1b2c3"
        objectAlias: "MyMountedSecret"
        failoverObject: 
          - objectName: "arn:aws:secretsmanager:us-east-2:777788889999:secret:MyFailoverSecret-d4e5f6"
```

## Sumber daya tambahan
<a name="additional-resources"></a>

Untuk informasi selengkapnya tentang penggunaan ASCP dengan Amazon EKS, lihat sumber daya berikut:
+ [Menggunakan Identitas Pod dengan Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [Menggunakan Penyedia AWS Rahasia dan Konfigurasi](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_ascp_csi.html)
+ [AWS Secrets Store CSI Driver di GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)