Gunakan CSI Penyedia AWS Rahasia dan Konfigurasi dengan Pod Identity untuk Amazon EKS - AWS Systems Manager

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

Gunakan CSI Penyedia AWS Rahasia dan Konfigurasi dengan Pod Identity untuk Amazon EKS

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 AWS Identity and Access Management (IAM) untuk Amazon EKS saat mengambil parameter dari AWS Systems Manager Parameter Store atau rahasia dari Secrets Manager.

Amazon EKS Pod Identity merampingkan proses konfigurasi izin IAM untuk aplikasi Kubernetes dengan memungkinkan 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 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

  1. Pod Identity memberikan peran IAM ke Pod.

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

  3. Jika diotorisasi, ASCP mengambil parameter yang diminta dan membuatnya tersedia untuk Pod.

Untuk informasi selengkapnya, lihat Memahami cara kerja Identitas Pod Amazon EKS di Panduan Pengguna Amazon EKS.

Prasyarat

penting

Pod Identity hanya didukung untuk Amazon EKS di cloud. Ini tidak didukung untuk Amazon EKS Anywhere, Layanan OpenShift Red Hat di AWS, 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

  • (Opsional) Akses ke dua Akun AWS untuk akses lintas akun

Instal Agen Identitas Pod Amazon EKS

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.

    Ganti default placeholder text dengan nilai Anda sendiri:

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

Mengatur ASCP dengan Pod Identity

  1. Buat kebijakan izin yang memberikan ssm:GetParameters dan ssm:DescribeParameters izin untuk parameter yang dibutuhkan Pod untuk mengakses.

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

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

    Lampirkan kebijakan IAM ke peran tersebut.

    Ganti default placeholder text dengan nilai Anda sendiri:

    aws iam attach-role-policy \ --role-name MY_ROLE \ --policy-arn POLICY_ARN
  3. Buat asosiasi Pod Identity. Sebagai contoh, lihat Membuat asosiasi Identitas Pod di Panduan Pengguna Amazon EKS

  4. Buat SecretProviderClass yang menentukan parameter atau rahasia mana yang akan dipasang di Pod:

    kubectl apply -f 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"

  5. Menerapkan Pod yang memasang parameter atau rahasia di bawah: /mnt/secrets-store

    kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
  6. 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 di AWS Identity and Access Management Panduan Pengguna.

Verifikasi pemasangan rahasia

Untuk memverifikasi bahwa parameter atau rahasia dipasang dengan benar, jalankan perintah berikut.

Ganti default placeholder text dengan nilai Anda sendiri:

kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MyParameter
Untuk mengatur Amazon EKS Pod Identity untuk mengakses parameter di Parameter Store
  1. Buat kebijakan izin yang memberikan ssm:GetParameters dan ssm:DescribeParameters izin untuk parameter yang dibutuhkan Pod untuk mengakses.

  2. Buat parameter diParameter Store, jika Anda belum memilikinya. Untuk informasi, lihat Membuat Parameter Store parameter di Systems Manager.

Pemecahan Masalah

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
  2. Untuk mendeskripsikan Pod, dalam perintah berikut, pod-id gunakan ID Pod dari Pod yang Anda temukan di langkah sebelumnya. Jika Anda tidak menggunakan namespace default, gunakan. -n NAMESPACE

    kubectl describe pod/pod-id
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/pod-id