Gunakan AWS Secrets Manager rahasia di Amazon Elastic Kubernetes Service - AWS Secrets Manager

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

Untuk menampilkan rahasia dari Secrets Manager sebagai file yang dipasang di EKS pod Amazon, Anda dapat menggunakan AWS Secrets and Configuration Provider (ASCP) untuk Kubernetes Secrets Store Driver. CSI Ini ASCP bekerja dengan Amazon Elastic Kubernetes Service (EKSAmazon) 1.17+ yang menjalankan grup node Amazon. EC2 AWS Fargate grup node tidak didukung. Dengan ituASCP, 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 kunci/nilai dalam JSON format, Anda dapat memilih mana yang akan dipasang di Amazon. EKS ASCPMenggunakan JMESPathsintaks untuk menanyakan pasangan kunci/nilai dalam rahasia Anda. Ini ASCP juga berfungsi dengan parameter Parameter Store.

Jika Anda menggunakan EKS kluster Amazon pribadi, pastikan klaster VPC tersebut berada di memiliki titik akhir Secrets Manager. CSIDriver Secrets Store menggunakan endpoint untuk melakukan panggilan ke Secrets Manager. Untuk informasi tentang membuat titik akhir di aVPC, lihatVPCtitik akhir.

Jika Anda menggunakan rotasi otomatis Secrets Manager untuk rahasia Anda, Anda juga dapat menggunakan fitur reconciler rotasi Secrets Store CSI Driver untuk memastikan Anda mengambil rahasia terbaru dari Secrets Manager. Untuk informasi selengkapnya, lihat Rotasi otomatis konten yang dipasang dan Rahasia Kubernetes yang disinkronkan.

Langkah 1: Siapkan kontrol akses

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

Jika panggilan dari ASCP untuk mencari Region dan IAM peran yang terkait dengan pod dibatasi oleh Kubernetes, Anda dapat mengubah kuota throttling menggunakan, seperti yang ditunjukkan pada Langkah 2. helm install

Untuk memberikan EKS pod Amazon Anda 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.

  2. Buat penyedia IAM OpenID Connect (OIDC) untuk cluster jika Anda belum memilikinya. Untuk informasi selengkapnya, lihat Membuat IAM OIDC penyedia untuk klaster Anda di Panduan EKS Pengguna Amazon.

  3. Buat IAMperan untuk akun layanan dan lampirkan kebijakan padanya. Untuk informasi selengkapnya, lihat Membuat IAM peran untuk akun layanan di Panduan EKS Pengguna Amazon.

  4. Jika Anda menggunakan EKS kluster Amazon pribadi, pastikan klaster tersebut berada di memiliki AWS STS titik akhir. VPC Untuk informasi tentang membuat titik akhir, lihat VPCEndpoint antarmuka di AWS Identity and Access Management Panduan Pengguna.

Langkah 2: Instal dan konfigurasikan ASCP

ASCPIni tersedia GitHub di repositori secrets-store-csi-provider-aws. Repo juga berisi YAML file contoh untuk membuat dan memasang rahasia.

Selama instalasi, Anda dapat mengkonfigurasi ASCP untuk menggunakan FIPS titik akhir. Untuk daftar titik akhir, lihatAWS Secrets Manager titik akhir.

Untuk menginstal ASCP dengan menggunakan Helm
  1. Untuk memastikan repo menunjuk ke grafik terbaru, gunakan helm repo update.

  2. Tambahkan bagan CSI Driver Secrets Store.

    helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
  3. Instal bagan. Untuk mengonfigurasi pelambatan, tambahkan tanda berikut: --set-json 'k8sThrottlingParams={"qps": "<number of queries per second>", "burst": "<number of queries per second>"}'

    helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
  4. Tambahkan ASCP bagan.

    helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
  5. Instal bagan. Untuk menggunakan FIPS titik akhir, tambahkan tanda berikut: --set useFipsEndpoint=true

    helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
Untuk menginstal dengan menggunakan YAML 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

Langkah 3: Identifikasi rahasia mana yang akan dipasang

Untuk menentukan rahasia mana yang ASCP dipasang di Amazon EKS sebagai file di sistem file, Anda membuat file. SecretProviderClass YAML SecretProviderClassDaftar rahasia untuk dipasang dan nama file untuk dipasang sebagai. SecretProviderClassHarus berada di namespace yang sama dengan EKS pod Amazon yang direferensikannya.

Contoh berikut menunjukkan cara menggunakan SecretProviderClass untuk mendeskripsikan rahasia yang ingin Anda pasang dan apa nama file yang dipasang di EKS pod Amazon.

Contoh: Pasang rahasia dengan nama atau ARN

Contoh berikut menunjukkan SecretProviderClass yang memasang tiga file di AmazonEKS:

  1. Rahasia yang ditentukan secara penuhARN.

  2. Rahasia yang ditentukan oleh nama.

  3. Versi rahasia tertentu.

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:111122223333:secret:MySecret2-d4e5f6" - objectName: "MySecret3" objectType: "secretsmanager" - objectName: "MySecret4" objectType: "secretsmanager" objectVersionLabel: "AWSCURRENT"

Contoh: Pasang pasangan kunci/nilai dari rahasia

Contoh berikut menunjukkan SecretProviderClass yang memasang tiga file di AmazonEKS:

  1. Rahasia yang ditentukan secara penuhARN.

  2. Pasangan username kunci/nilai dari rahasia yang sama.

  3. Pasangan password kunci/nilai dari rahasia yang sama.

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:111122223333:secret:MySecret-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword

Contoh: Tentukan Wilayah failover untuk rahasia Multi-wilayah

Untuk menyediakan ketersediaan selama pemadaman konektivitas atau untuk konfigurasi pemulihan bencana, ASCP mendukung fitur failover otomatis untuk mengambil rahasia dari wilayah sekunder.

Contoh berikut menunjukkan SecretProviderClass yang mengambil rahasia yang direplikasi ke beberapa Wilayah. Dalam contoh ini, ASCP mencoba untuk mengambil rahasia dari keduanya us-east-1 danus-east-2. Jika salah satu Wilayah mengembalikan kesalahan 4xx, misalnya untuk masalah otentikasi, ASCP tidak memasang rahasia mana pun. Jika rahasia berhasil diambilus-east-1, maka nilai rahasia itu ASCP dipasang. Jika rahasia tidak berhasil diambil darius-east-1, tetapi berhasil diambil darius-east-2, maka ASCP mount nilai rahasia itu.

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"

Contoh: Pilih rahasia failover untuk dipasang

Contoh berikut menunjukkan SecretProviderClass yang menentukan rahasia mana yang akan dipasang jika terjadi failover. Rahasia failover bukanlah replika. Dalam contoh ini, ASCP mencoba untuk mengambil dua rahasia yang ditentukan olehobjectName. Jika salah satu mengembalikan kesalahan 4xx, misalnya untuk masalah otentikasi, ASCP tidak memasang salah satu rahasia. Jika rahasia berhasil diambilus-east-1, maka nilai rahasia itu ASCP dipasang. Jika rahasia tidak berhasil diambil darius-east-1, tetapi berhasil diambil darius-east-2, maka ASCP mount nilai rahasia itu. File yang dipasang di Amazon EKS diberi namaMyMountedSecret.

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:111122223333:secret:MySecret-a1b2c3" objectAlias: "MyMountedSecret" failoverObject: - objectName: "arn:aws:secretsmanager:us-east-2:111122223333:secret:MyFailoverSecret-d4e5f6"

Langkah 4: Pasang rahasia sebagai file di EKS pod Amazon

Petunjuk berikut menunjukkan cara memasang rahasia sebagai file menggunakan YAML file contoh .yaml ExampleSecretProviderClassdan.yaml. ExampleDeployment

Untuk memasang rahasia di Amazon EKS
  1. Terapkan SecretProviderClass ke pod dengan perintahkubectl apply -f ExampleSecretProviderClass.yaml.

  2. Terapkan pod Anda dengan perintahkubectl apply -f ExampleDeployment.yaml.

  3. Itu ASCP memasang file.

Pemecahan Masalah

Anda dapat melihat sebagian besar kesalahan dengan menjelaskan penerapan pod.

Untuk melihat pesan kesalahan untuk penampung Anda
  1. Dapatkan daftar nama pod dengan perintah berikut. Jika Anda tidak menggunakan namespace default, gunakan. -n <NAMESPACE>

    kubectl get pods
  2. Untuk mendeskripsikan pod, dalam perintah berikut, untuk <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 lebih lanjut di log penyedia, dalam perintah berikut, untuk <PODID> gunakan ID pod csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs pod/<PODID>