全部产品
Search
文档中心

Container Compute Service:Gunakan RRSA untuk mengizinkan pod yang berbeda mengakses layanan cloud yang berbeda

更新时间:Dec 15, 2025

Anda dapat menggunakan fitur RAM Roles for Service Accounts (RRSA) untuk menegakkan kontrol akses pada pod yang berbeda dalam kluster. Fitur ini memungkinkan kontrol izin API yang lebih rinci pada pod dan mengurangi risiko keamanan. Topik ini menjelaskan cara menggunakan RRSA.

Informasi latar belakang

OpenID Connect (OIDC) adalah protokol otentikasi yang dikembangkan berdasarkan Open Authorization (OAuth) 2.0. Alibaba Cloud Resource Access Management (RAM) mendukung Single Sign-On (SSO) berbasis OIDC. Aplikasi yang diterapkan dalam kluster Kubernetes dapat menggunakan Token Layanan Keamanan (STS) yang dihasilkan untuk Peran RAM yang diasumsikan oleh pod aplikasi untuk memanggil operasi API dari layanan cloud. Alibaba Cloud Container Compute Service (ACS) mendukung fitur RRSA. Dalam skenario multi-penyewa, Anda dapat menggunakan fitur RRSA untuk mengizinkan pod yang berbeda mengakses layanan cloud yang berbeda. Anda juga dapat menggunakan fitur RRSA dalam kluster ACS untuk mengontrol masa berlaku token STS.

Langkah-langkah berikut menunjukkan bagaimana aplikasi mengakses sumber daya cloud ketika RRSA digunakan untuk menegakkan kontrol akses:

  1. Terapkan pod dengan fitur proyeksi volume token akun layanan diaktifkan.

    Catatan

    Kluster ACS secara default memiliki fitur proyeksi volume token akun layanan diaktifkan.

  2. Kluster ACS membuat file token OpenID Connect (OIDC) akun layanan dan memasang file token tersebut ke pod.

  3. Aplikasi dalam pod menggunakan file token OIDC untuk memanggil operasi API AssumeRoleWithOIDC dari STS dan memperoleh token STS yang digunakan untuk mengasumsikan Peran RAM.

    Catatan

    Untuk memungkinkan aplikasi melakukan operasi ini, Anda harus terlebih dahulu memodifikasi konfigurasi Peran RAM untuk mengizinkan akun layanan yang digunakan oleh pod mengasumsikan Peran RAM yang ditentukan. Untuk informasi lebih lanjut, lihat AssumeRoleWithOIDC.

  4. Aplikasi dalam pod menggunakan token STS untuk mengasumsikan Peran RAM yang ditentukan dan kemudian memanggil API layanan cloud yang relevan.

Aktifkan RRSA

  1. Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri halaman detail kluster, klik Cluster Information.

  3. Di halaman Cluster Information, klik tab Basic Information. Pada tab Informasi Dasar, klik Enable RRSA.

  4. Dalam pesan Enable RRSA, klik Confirm.

    Catatan
    • Dibutuhkan sekitar 2 hingga 3 menit untuk mengaktifkan RRSA. Jika kolom Cluster Status terus menampilkan Updating, klik image di sudut kanan atas untuk menyegarkan halaman secara manual.

    • Setelah status kluster berubah dari Updating menjadi Running, RRSA diaktifkan untuk kluster. Gerakkan penunjuk ke Enabled di sebelah kanan RRSA OIDC untuk melihat URL dan ARN penyedia OIDC.

Setelah RRSA diaktifkan, ACS melakukan operasi berikut di latar belakang:

  • Secara otomatis membuat penerbit OIDC yang didedikasikan untuk kluster. Penerbit OIDC dikelola oleh ACS.

  • Membuat penyedia identitas Peran RAM dalam akun Anda. Penyedia identitas menggunakan penerbit OIDC untuk Single Sign-On (SSO). Penyedia identitas diberi nama ack-rrsa-<cluster_id>. <cluster_id> menunjukkan ID kluster Anda.

Bekerja dengan RRSA

Setelah Anda mengaktifkan RRSA untuk kluster Anda, lakukan langkah-langkah berikut untuk memungkinkan aplikasi dalam kluster memperoleh token STS melalui RRSA. Token STS digunakan untuk memanggil API layanan cloud tertentu.

Gunakan Peran RAM baru dan berikan izin yang diperlukan kepada Peran RAM

Catatan

Jika Anda ingin menggunakan Peran RAM yang ada, Anda harus memberikan izin yang diperlukan kepada Peran RAM.

Dalam contoh ini, sebuah aplikasi dibuat dan RRSA diaktifkan untuk kluster untuk memungkinkan aplikasi melakukan operasi berikut: mengasumsikan Peran RAM yang ditentukan dan kemudian memanggil operasi API untuk menanyakan kluster yang dimiliki oleh akun Alibaba Cloud saat ini. Sumber daya berikut digunakan:

  • Namespace: rrsa-demo

  • Akun layanan: demo-sa

  • Peran RAM: demo-role-for-rrsa

  1. Buat Peran RAM bernama demo-role-for-rrsa.

    1. Gunakan akun Alibaba Cloud untuk masuk ke Konsol RAM.

    2. Di panel navigasi kiri, pilih Identities > Roles. Di halaman Roles, klik Create Role.

    3. Di panel Create Role, klik Switch To Editor untuk membuat peran.

    4. Sebagai contoh, jika Anda menggunakan Visual Editor, konfigurasikan peran berdasarkan informasi berikut dan klik OK.

      Item konfigurasi

      Deskripsi

      Effect

      Nilai defaultnya adalah Allow.

      Principal

      Pilih Identity Provider dan klik Edit.

      Atur jenis penyedia identitas ke OIDC dan pilih penyedia identitas kluster, seperti ack-rrsa-<cluster_id>. <cluster_id> adalah ID kluster Anda.

      Action

      sts:AssumeRole dipilih secara default.

      Condition

      • oidc:iss: Kondisi ini secara otomatis ditambahkan setelah Anda memilih Identity Provider. Pertahankan nilai default.

      • oidc:aud: Kondisi ini secara otomatis ditambahkan setelah Anda memilih Identity Provider. Pertahankan nilai default.

      • oidc:sub: Anda perlu secara manual Add A Condition.

        • Condition Key: oidc:sub

        • Operator: StringEquals

        • Condition Value: Formatnya adalah system:serviceaccount:<namespace>:<serviceAccountName>.

          • <namespace>: Tentukan namespace aplikasi.

          • <serviceAccountName>: Tentukan nama akun layanan.

          Dalam contoh ini, masukkan system:serviceaccount:rrsa-demo:demo-sa.

      image

    5. Di kotak dialog yang muncul, masukkan nama peran demo-role-for-rrsa dan klik OK.

  2. Lampirkan kebijakan sistem AliyunCSReadOnlyAccess ke peran yang dibuat. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Peran RAM.

    image

  3. Terapkan aplikasi.

    1. Buat file bernama demo.yaml berdasarkan persyaratan berikut:

      Catatan

      Modifikasi bidang berikut dalam template di atas:

      • Ganti <role_arn> dengan ARN Peran RAM yang digunakan oleh aplikasi. Anda dapat melihat ARN di tab Basic Information Konsol RAM.

      • Ganti <oid_provider_arn> dengan ARN penyedia OIDC yang digunakan oleh kluster. Anda dapat menggerakkan penunjuk ke Enabled di sebelah kanan RRSA OIDC di tab Basic Information halaman Cluster Information.

      Lihat Template YAML Contoh

      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: rrsa-demo
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: demo-sa
        namespace: rrsa-demo
      ---
      apiVersion: v1
      kind: Pod
      metadata:
        name: demo
        namespace: rrsa-demo
      spec:
        containers:
        - args:
          - rrsa
          - demo
          env:
          - name: ALIBABA_CLOUD_ROLE_ARN
            value: <role_arn>
          - name: ALIBABA_CLOUD_OIDC_PROVIDER_ARN
            value: <oid_provider_arn>
          - name: ALIBABA_CLOUD_OIDC_TOKEN_FILE
            value: /var/run/secrets/ack.alibabacloud.com/rrsa-tokens/token
          image: registry.cn-hangzhou.aliyuncs.com/acs/ack-ram-tool:1.0.0
          imagePullPolicy: Always
          name: demo
          volumeMounts:
          - mountPath: /var/run/secrets/ack.alibabacloud.com/rrsa-tokens
            name: rrsa-oidc-token
            readOnly: true
        restartPolicy: OnFailure
        serviceAccount: demo-sa
        serviceAccountName: demo-sa
        volumes:
        - name: rrsa-oidc-token
          projected:
            defaultMode: 420
            sources:
            - serviceAccountToken:
                audience: sts.aliyuncs.com
                expirationSeconds: 3600  # Unit: detik. Nilai valid: 600 (10 menit) hingga 43200 (12 jam).
                path: token
    2. Jalankan perintah berikut untuk menerapkan aplikasi:

      kubectl apply -f demo.yaml

      Setelah aplikasi diterapkan, program aplikasi dapat menggunakan token OIDC, ARN Peran RAM, dan ARN penyedia identitas OIDC untuk memanggil operasi API STS AssumeRoleWithOIDC untuk memperoleh token STS sementara dari Peran RAM. Kemudian, ia dapat menggunakan token tersebut untuk memanggil API layanan cloud. Untuk informasi lebih lanjut, lihat AssumeRoleWithOIDC.

  4. Jalankan perintah berikut untuk mencetak log aplikasi:

    kubectl -n rrsa-demo logs demo

    Daftar kluster ditampilkan di output:

    20**/**/** 08:35:23 ======= [mulai] daftar kluster ACK dengan RRSA =======
    kluster:
    id kluster: cf***, nama kluster: foo*
    id kluster: c8***, nama kluster: bar*
    id kluster: c4***, nama kluster: foob*
    20**/**/** 08:35:24 ======= [akhir]   daftar kluster ACK dengan RRSA =======
  5. Opsional: Lepaskan kebijakan sistem AliyunCSReadOnlyAccess dari Peran RAM. Untuk informasi lebih lanjut, lihat Hapus Izin dari Peran RAM.

    Tunggu 30 detik dan jalankan perintah berikut untuk mencetak log aplikasi lagi:

    kubectl -n rrsa-demo logs demo

    Pesan kesalahan berikut menunjukkan bahwa aplikasi tidak memiliki izin yang diperlukan:

    20**/**/** 10:09:33 ======= [mulai] daftar kluster ACK dengan RRSA =======
    20**/**/** 10:09:33 SDKError:
       StatusCode: 403
       Code: StatusForbidden
       Message: kode: 403, Kebijakan STSToken Dilarang untuk tindakan cs:DescribeClusters id permintaan: XXXX
       Data: {"accessDeniedDetail":{"AuthAction":"cs:DescribeClusters","AuthPrincipalDisplayName":"demo-role-for-rrsa:ack-ram-tool","AuthPrincipalOwnerId":"XXXX","AuthPrincipalType":"AssumedRoleUser","EncodedDiagnosticMessage":"XXXX","NoPermissionType":"ImplicitDeny","PolicyType":"ResourceGroupLevelIdentityBasedPolicy"},"code":"StatusForbidden","message":"Kebijakan STSToken Dilarang untuk tindakan cs:DescribeClusters","requestId":"XXXX","status":403,"statusCode":403}

Gunakan Peran RAM yang ada dan berikan izin yang diperlukan kepada Peran RAM

Jika Anda ingin aplikasi menggunakan Peran RAM yang ada, Anda harus memodifikasi kebijakan kepercayaan Peran RAM berdasarkan template berikut. Dengan cara ini, aplikasi dapat menggunakan akun layanan untuk mengasumsikan Peran RAM dan memperoleh token STS. Untuk informasi lebih lanjut, lihat Edit Kebijakan Kepercayaan Peran RAM.

Contoh konfigurasi Statement:

Catatan

Modifikasi bidang berikut dalam konfigurasi Statement:

  • Ganti <oidc_issuer_url> dengan URL penyedia OIDC yang digunakan oleh kluster. Di tab Basic Information halaman Cluster Information, gerakkan penunjuk ke Enabled di sebelah kanan RRSA OIDC.

  • Ganti <oidc_provider_arn> dengan ARN penyedia OIDC yang digunakan oleh kluster. Di tab Basic Information halaman Cluster Information, gerakkan penunjuk ke Enabled di sebelah kanan RRSA OIDC.

  • Ganti <namespace> dengan namespace aplikasi.

  • Ganti <service_account> dengan akun layanan yang digunakan oleh aplikasi.

{
  "Action": "sts:AssumeRole",
  "Condition": {
    "StringEquals": {
      "oidc:aud": "sts.aliyuncs.com",
      "oidc:iss": "<oidc_issuer_url>",
      "oidc:sub": "system:serviceaccount:<namespace>:<service_account>"
    }
  },
  "Effect": "Allow",
  "Principal": {
    "Federated": [
      "<oidc_provider_arn>"
    ]
  }
}

Dokumen terkait