All Products
Search
Document Center

Container Compute Service:Konfigurasikan izin tingkat pod dengan RRSA

Last Updated:Jun 21, 2026

RAM Roles for Service Accounts (RRSA) memungkinkan Anda menerapkan isolasi izin OpenAPI tingkat pod di dalam kluster. Fitur ini memberikan kontrol detail halus terhadap akses ke sumber daya cloud dan mengurangi risiko keamanan. Topik ini menjelaskan cara menggunakan fitur RRSA.

Latar Belakang

OIDC (OpenID Connect) adalah protokol otentikasi yang dibangun di atas OAuth 2.0. RAM Alibaba Cloud mendukung SSO berbasis peran berbasis OIDC. Aplikasi dalam kluster Kubernetes menggunakan kredensial temporary dari Security Token Service (STS) untuk mengakses API sumber daya cloud. Alibaba Cloud Container Service (ACS) mendukung RRSA. Dalam skenario multi-tenant, RRSA menyediakan isolasi izin detail halus untuk akses sumber daya cloud antar pod aplikasi dalam satu kluster. Di ACS, RRSA juga memungkinkan Anda mengontrol periode validitas kredensial temporary.

Cara kerja RRSA sebagai berikut:

  1. Anda men-deploy pod aplikasi yang menggunakan fitur service account token volume projection.

    Catatan

    Fitur service account token volume projection diaktifkan secara default di kluster ACS.

  2. Kluster membuat dan memasang file token OIDC service account yang sesuai untuk pod aplikasi tersebut.

  3. Aplikasi dalam pod menggunakan file token OIDC yang dipasang untuk memanggil API STS AssumeRoleWithOIDC guna memperoleh kredensial temporary untuk peran RAM tertentu.

    Catatan

    Anda harus memodifikasi kebijakan kepercayaan peran RAM terlebih dahulu agar service account pod dapat mengasumsikan peran tersebut. Untuk informasi selengkapnya, lihat AssumeRoleWithOIDC.

  4. Aplikasi dalam pod menggunakan kredensial temporary yang diperoleh untuk mengakses API sumber daya cloud.

Aktifkan RRSA

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

  2. Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Cluster Information.

  3. Di halaman detail kluster, klik tab Basic Information. Di bagian Security and Auditing, klik Enable di sebelah RRSA OIDC.

  4. Di kotak dialog Enable RRSA, klik OK.

    Catatan
    • Mengaktifkan fitur RRSA memerlukan waktu sekitar 2 hingga 3 menit. Jika Cluster Status tetap dalam status Updating, klik tombol image di pojok kanan atas halaman untuk refresh.

    • Saat status kluster berubah dari Updating menjadi Running, fitur RRSA telah diaktifkan untuk kluster tersebut. Anda dapat mengarahkan kursor ke Enabled di sebelah RRSA OIDC untuk melihat URL dan ARN penyedia OIDC.

Setelah mengaktifkan fitur RRSA untuk suatu kluster, Konsol ACS melakukan operasi berikut di latar belakang:

  • Otomatis membuat layanan OIDC Issuer khusus untuk kluster tersebut. Layanan ini dikelola oleh ACS dan tidak memerlukan maintenance manual.

  • Membuat penyedia identitas OIDC di akun Anda yang menggunakan OIDC Issuer tersebut. Penyedia identitas OIDC diberi nama ack-rrsa-<cluster_id>, dengan <cluster_id> sebagai ID kluster Anda.

Gunakan RRSA

Setelah mengaktifkan fitur RRSA, Anda dapat mengikuti langkah-langkah berikut agar aplikasi dalam kluster Anda dapat memperoleh kredensial temporary untuk mengakses API sumber daya cloud menggunakan RRSA.

Buat dan otorisasi peran RAM baru

Catatan

Untuk menggunakan peran RAM yang sudah ada alih-alih membuat yang baru, Anda dapat menambahkan izin yang diperlukan ke peran RAM yang sudah ada.

Aplikasi yang dideploy dalam contoh ini menggunakan fitur RRSA untuk mengasumsikan peran tertentu dan mengambil daftar kluster di akun saat ini. Sumber daya utama yang digunakan adalah sebagai berikut:

  • Namespace: rrsa-demo.

  • Service account: demo-sa.

  • RAM role: demo-role-for-rrsa.

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

    1. Login ke Konsol RAM menggunakan Akun Alibaba Cloud Anda.

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

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

    4. Di tab Visual Editor, konfigurasikan informasi peran seperti pada tabel berikut, lalu klik OK.

      Parameter

      Deskripsi

      Effect

      Nilai default adalah Allow.

      Principal

      Pilih Identity Provider dan klik Edit.

      Atur Identity Provider Type ke OIDC dan pilih penyedia identitas OIDC kluster, misalnya ack-rrsa-<cluster_id>. <cluster_id> adalah ID kluster Anda.

      Action

      Secara default, sts:AssumeRole dipilih.

      Condition

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

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

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

        • Key: oidc:sub

        • Operator: StringEquals

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

          • <namespace>: namespace tempat aplikasi berada.

          • <serviceAccountName>: nama service account.

          Berdasarkan informasi aplikasi uji coba, masukkan system:serviceaccount:rrsa-demo:demo-sa.

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

  2. Berikan kebijakan sistem AliyunCSReadOnlyAccess kepada peran yang telah dibuat, yang diperlukan oleh aplikasi uji coba. Untuk informasi lebih lanjut, lihat Manage permissions for a RAM role.

  3. Deploy aplikasi uji coba.

    1. Buat file bernama demo.yaml dengan konten berikut.

      Catatan

      Ganti placeholder berikut dalam templat aplikasi contoh.

      • <role_arn>: Ganti dengan ARN peran RAM yang digunakan aplikasi. Anda dapat memperoleh ARN dari bidang ARN di halaman Basic Information peran di Konsol RAM.

      • <oidc_provider_arn>: Ganti dengan ARN penyedia OIDC kluster. Anda dapat memperoleh ARN ini dengan mengarahkan kursor ke Enabled di sebelah RRSA OIDC di tab Basic Information halaman Cluster Information.

      Klik untuk melihat kode 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: <oidc_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  # Satuan: detik. Nilai valid: [600, 43200], artinya 10 menit hingga 12 jam.
                path: token
    2. Jalankan perintah berikut untuk deploy aplikasi uji coba.

      kubectl apply -f demo.yaml

      Setelah aplikasi dideploy, aplikasi dapat menggunakan token OIDC yang dipasang, ARN peran RAM, dan ARN penyedia identitas OIDC untuk memanggil API AssumeRoleWithOIDC STS guna memperoleh kredensial temporary untuk peran RAM tertentu. Aplikasi kemudian menggunakan kredensial temporary ini untuk mengakses API sumber daya cloud. Untuk informasi lebih lanjut, lihat AssumeRoleWithOIDC.

  4. Jalankan perintah berikut untuk melihat log aplikasi uji coba.

    kubectl -n rrsa-demo logs demo

    Output yang diharapkan adalah daftar kluster ACK:

    20**/**/** 08:35:23 ======= [begin] list ACK clusters with RRSA =======
    clusters:
    cluster id: cf***, cluster name: foo*
    cluster id: c8***, cluster name: bar*
    cluster id: c4***, cluster name: foob*
    20**/**/** 08:35:24 ======= [end]   list ACK clusters with RRSA =======
  5. Opsional: Lepaskan kebijakan sistem AliyunCSReadOnlyAccess dari peran tersebut. Untuk informasi lebih lanjut, lihat Remove permissions from a RAM role.

    Tunggu sekitar 30 detik, lalu jalankan perintah berikut untuk melihat log aplikasi lagi:

    kubectl -n rrsa-demo logs demo

    Diharapkan muncul error penolakan izin:

    20**/**/** 10:09:33 ======= [begin] list ACK clusters with RRSA =======
    20**/**/** 10:09:33 SDKError:
       StatusCode: 403
       Code: StatusForbidden
       Message: code: 403, STSToken policy Forbidden for action cs:DescribeClusters request id: 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":"STSToken policy Forbidden for action cs:DescribeClusters","requestId":"XXXX","status":403,"statusCode":403}

Otorisasi peran RAM yang sudah ada

Jika aplikasi Anda perlu menggunakan peran RAM yang sudah ada alih-alih yang baru, Anda dapat memodifikasi kebijakan kepercayaan peran RAM tersebut dengan menambahkan pernyataan yang mengizinkan aplikasi yang menggunakan service account tertentu untuk mengasumsikan peran RAM ini dan memperoleh kredensial temporary. Untuk informasi lebih lanjut, lihat Modify the trust policy of a RAM role.

Kode berikut adalah contoh entri Statement yang perlu ditambahkan ke kebijakan kepercayaan peran RAM.

Catatan

Ganti placeholder berikut dalam contoh entri Statement.

  • <oidc_issuer_url>: Ganti dengan URL penyedia OIDC untuk kluster. Anda dapat memperoleh URL ini dengan mengarahkan kursor ke Enabled di sebelah RRSA OIDC di tab Basic Information halaman Cluster Information.

  • <oidc_provider_arn>: Ganti dengan ARN penyedia OIDC untuk kluster. Anda dapat memperoleh ARN ini dengan mengarahkan kursor ke Enabled di sebelah RRSA OIDC di tab Basic Information halaman Cluster Information.

  • <namespace>: Ganti dengan namespace tempat aplikasi berada.

  • <service_account>: Ganti dengan service account yang digunakan 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>"
    ]
  }
}

Referensi