全部产品
Search
文档中心

Container Compute Service:Praktik terbaik otorisasi

更新时间:Nov 12, 2025

Sistem otorisasi Container Compute Service (ACS) mencakup otorisasi Resource Access Management (RAM) untuk sumber daya komputasi dasar dan otorisasi Role-Based Access Control (RBAC) untuk kluster ACS. Pengguna dengan peran berbeda memerlukan izin berbeda pada kedua lapisan ini. Topik ini menjelaskan praktik terbaik otorisasi untuk lima jenis peran: manajer sumber daya perusahaan, administrator kluster Kubernetes, insinyur O&M kluster dan aplikasi, pengembang aplikasi, serta administrator izin.

Sistem otorisasi ACS

Sistem otorisasi ACS terdiri dari otorisasi RAM untuk sumber daya komputasi dan otorisasi RBAC untuk kluster ACS. Gambar berikut mengilustrasikan sistem otorisasi ACS.

  • Otorisasi RAM mencakup operasi O&M kluster. Kluster ACS merupakan jenis kluster Serverless Container Service for Kubernetes (ACK), sehingga Anda harus memanggil API ACK untuk melakukan operasi O&M pada kluster ACS. Oleh karena itu, Anda memerlukan izin untuk memanggil operasi API ACK dan layanan Alibaba Cloud lainnya. Operasi O&M tersebut meliputi:

    • Membuat, melihat, dan menghapus kluster.

    • Mengelola otorisasi RBAC.

    • Memantau kluster serta mengelola log dan event.

  • Otorisasi RBAC digunakan untuk memberikan izin tingkat namespace atau seluruh kluster pada sumber daya Kubernetes di kluster ACS. Izin ini mencakup kemampuan untuk membuat, menghapus, memodifikasi, dan melihat jenis sumber daya Kubernetes berikut:

    • Sumber daya beban kerja: seperti Deployment, StatefulSet, Job, CronJob, Pod, ReplicaSet, dan HorizontalPodAutoscaler (HPA).

    • Sumber daya jaringan: seperti Service, Ingress, dan NetworkPolicy.

    • Sumber daya penyimpanan: seperti persistent volume (PV), persistent volume claim (PVC), dan StorageClass.

    • Namespace, ConfigMap, dan Secret.

Kebijakan otorisasi default sistem

Container Compute Service (ACS) menyediakan kebijakan otorisasi default sistem berikut. Anda dapat memberikan kebijakan ini kepada Pengguna RAM atau Peran RAM untuk memberikan izin secara cepat.

Penting

Cakupan otorisasi kebijakan default sistem cukup luas. Kebijakan ini mungkin memberikan izin baca atau tulis untuk semua operasi OpenAPI ACK dan ACS. Berikan izin ini dengan hati-hati.

Kebijakan otorisasi default sistem

Ikhtisar kebijakan otorisasi

AliyunAccFullAccess

Izin untuk mengelola Container Compute Service (ACS).

AliyunAccReadOnlyAccess

Izin read-only pada Container Compute Service (ACS).

AliyunCSFullAccess

Izin untuk mengelola Container Service for Kubernetes (ACK).

Penting

Memberikan izin baca dan tulis pada semua kluster ACK, termasuk kluster ACS. Berikan izin ini dengan hati-hati.

AliyunCSReadOnlyAccess

Izin read-only pada Container Service for Kubernetes (ACK).

Penting

Memberikan izin baca pada semua kluster ACK, termasuk kluster ACS. Berikan izin ini dengan hati-hati.

Kebijakan otorisasi AliyunAccFullAccess

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "acc:*",
      "Resource": "*"
    }
  ],
  "Version": "1"
}

Kebijakan otorisasi AliyunAccReadOnlyAccess

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "acc:Describe*",
        "acc:CheckServiceRole"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

Kebijakan otorisasi AliyunCSFullAccess

{
    "Version": "1",
    "Statement": [
        {
            "Action": "cs:*",
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": "ram:PassRole",
            "Resource": "*",
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "acs:Service": "cs.aliyuncs.com"
                }
            }
        }
    ]
}

Kebijakan otorisasi AliyunCSReadOnlyAccess

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "cs:CheckServiceRole",
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Praktik terbaik otorisasi

Ketika Pengguna RAM atau Peran RAM perlu melakukan O&M kluster dan aplikasi, Anda harus memberikan izin RAM dan izin RBAC kepada Pengguna RAM atau Peran RAM tersebut secara berurutan—izin RAM terlebih dahulu, baru izin RBAC. Operasi otorisasi untuk tiga skenario khas adalah sebagai berikut:

Skenario 1: Memberikan izin kepada insinyur O&M untuk kluster dan aplikasi dalam kluster

Objek otorisasi memerlukan izin untuk mengelola dan memelihara kluster ACS serta melakukan O&M pada objek sumber daya aplikasi dalam kluster ACS. Oleh karena itu, proses otorisasi mencakup otorisasi RAM dan otorisasi RBAC.

  1. RAM Authorization

    Container Service for Kubernetes (ACK) menyediakan dua kebijakan sistem untuk RAM: AliyunCSFullAccess dan AliyunCSReadOnlyAccess.

    • AliyunCSFullAccess memberikan izin akses baca dan tulis untuk semua operasi OpenAPI ACK.

    • AliyunCSReadOnlyAccess memberikan izin akses read-only untuk semua operasi OpenAPI ACK.

      Penting

      Kedua kebijakan sistem ini berlaku untuk semua kluster ACK, termasuk kluster ACS. Berikan izin ini dengan hati-hati.

    Login ke Konsol RAM dan sambungkan salah satu kebijakan sistem sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Memberikan izin kepada Pengguna RAM dan Memberikan izin kepada Peran RAM.

    Jika Anda memerlukan kontrol akses detail halus, Anda dapat membuat kebijakan kustom. Untuk informasi lebih lanjut, lihat Memberikan izin RAM kepada Pengguna RAM atau Peran RAM.

    Dalam skenario ini, contoh kebijakan otorisasi RAM adalah sebagai berikut.

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "acc:DescribeCommodityStatus",
                    "acc:CheckServiceRole",
                    "acc:DescribeCloudProducts",
                    "acc:DescribeRegions",
                    "acc:DescribeZones",
                    "acc:GetInstancePrice",
                    "acc:RecommendZones"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": "bssapi:GetPayAsYouGoPrice",
                "Resource": "*"
            },
            {
                "Action": "ecs:DescribePrice",
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": "ram:GetRole",
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": [
                "cs:CreateCluster",
                "cs:DescribeAddons",
                "cs:DescribeUserQuota",
                "cs:DescribeTasks",
                "cs:ListClusterAddonInstances"
                ],
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": [
                    "cs:GetClusters",
                    "cs:DescribeClustersV1",
                    "cs:DescribeClusterUserKubeconfig",
                    "cs:DescribeClusterResources",
                    "cs:DescribeUserQuota",
                    "cs:DescribeClusterLogs",
                    "cs:ModifyCluster",
                    "cs:UpgradeCluster",
                    "cs:GetUpgradeStatus",
                    "cs:ResumeUpgradeCluster",
                    "cs:PauseClusterUpgrade",
                    "cs:CancelClusterUpgrade",
                    "cs:InstallClusterAddons",
                    "cs:UpgradeClusterAddons",
                    "cs:DescribeClusterAddonsUpgradeStatus",
                    "cs:UnInstallClusterAddons",
                    "cs:DeleteCluster",
                    "cs:DescribeClusterDetail",
                    "cs:GetClusterAuditProject",
                    "cs:DescribeClusterAddonsVersion",
                    "cs:DescribeClusterTasks",
                    "cs:DescribeClusterEvents",
                    "cs:DescribeEvents",
                    "cs:ListClusterReportSummary",
                    "cs:GetClusterBasicInfo",
                    "cs:ListReportTaskRule",
                    "cs:CreateReportTaskRule",
                    "cs:CheckControlPlaneLogEnable",
                    "cs:CreateClusterCheck"
                ],
                "Effect": "Allow",
                "Resource": "acs:cs:*:*:cluster/<yourclusterID>"
            },
            {
                "Action": [
                     "cs:CheckServiceRole",
                     "cs:DescribeKubernetesVersionMetadata"
                ],
                "Effect": "Allow",
                "Resource": "acs:cs:*:*:cluster/*"
            },
            {
                "Action": [
                     "log:ListProject"
                ],
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": [
                     "vpc:ListEnhanhcedNatGatewayAvailableZones",
                     "vpc:DescribeEipAddresses",
                     "vpc:DescribeVSwitches"
                ],
                "Effect": "Allow",
                "Resource": "*"
            }
        ],
        "Version": "1"
    }

    Pada contoh di atas, ganti <yourclusterID> dengan ID kluster ACS Anda.

  2. Untuk informasi lebih lanjut tentang OpenAPI ACK, lihat [Perubahan Produk] Pengumuman tentang optimalisasi autentikasi OpenAPI untuk Container Service dan Ikhtisar API.

  3. RBAC Authorization

    Setelah memberikan izin RAM, Anda juga harus memberikan izin RBAC untuk kluster yang sesuai kepada Pengguna RAM atau Peran RAM tersebut. ACK menyediakan empat peran yang telah ditentukan sebelumnya di tingkat kluster.

    Peran

    Izin RBAC dalam kluster

    Administrator

    Izin baca dan tulis pada semua sumber daya di semua namespace.

    Insinyur O&M

    Izin baca dan tulis pada sumber daya Kubernetes yang terlihat di konsol di semua namespace, serta izin read-only pada node kluster, PV, namespace, dan kuota.

    Pengembang

    Izin baca dan tulis pada sumber daya Kubernetes yang terlihat di konsol di semua atau namespace tertentu.

    Pengguna terbatas

    Izin read-only pada sumber daya Kubernetes yang terlihat di konsol di semua atau namespace tertentu.

    1. Di Konsol Container Compute Service, klik Permission Management di panel navigasi sebelah kiri. Pada tab RAM Users atau RAM Roles, temukan objek otorisasi dan klik Manage Permissions.

    2. Pada kotak dialog yang muncul, klik +Add Permission, atur pengelolaan izin untuk kluster target dan namespace yang sesuai menjadi O&M Engineer, lalu klik Submit Authorization untuk menyelesaikan konfigurasi. RBAC

    Setelah menyambungkan peran yang telah ditentukan sebelumnya, ACS secara otomatis membuat instance ClusterRoleBinding di kluster yang sesuai dengan identitas objek yang diberi otorisasi. Izin RBAC untuk peran Insinyur O&M yang telah ditentukan sebelumnya adalah sebagai berikut.

    Contoh izin RBAC untuk peran Insinyur O&M yang telah ditentukan sebelumnya

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: cs:ops
    rules:
    - apiGroups: [""]
      resources:  ["pods", "pods/attach", "pods/exec", "pods/portforward", "pods/proxy"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: [""]
      resources:  ["configmaps", "endpoints", "persistentvolumeclaims", "replicationcontrollers", "replicationcontrollers/scale", "secrets", "serviceaccounts", "services", "services/proxy"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: [""]
      resources:  ["bindings", "events", "limitranges", "namespaces/status", "replicationcontrollers/status", "pods/log", "pods/status", "resourcequotas", "resourcequotas/status", "componentstatuses"]
      verbs: ["get", "list", "watch"]
    - apiGroups: [""]
      resources:  ["namespaces", "nodes", "persistentvolumes"]
      verbs: ["get", "list", "watch", "patch"]
    - apiGroups: ["coordination.k8s.io"]
      resources:  ["leases"]
      verbs: ["get"]
    - apiGroups: ["apps"]
      resources:  ["daemonsets", "deployments", "deployments/rollback", "deployments/scale", "replicasets", "replicasets/scale", "statefulsets"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["autoscaling"]
      resources:  ["horizontalpodautoscalers"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["batch"]
      resources:  ["cronjobs", "jobs"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["extensions"]
      resources:  ["daemonsets", "deployments", "deployments/rollback", "deployments/scale","ingresses","replicasets", "replicasets/scale", "replicationcontrollers/scale"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["networking.k8s.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["servicecatalog.k8s.io"]
      resources:  ["clusterserviceclasses", "clusterserviceplans", "clusterservicebrokers", "serviceinstances", "servicebindings"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["servicecatalog.k8s.io"]
      resources:  ["clusterservicebrokers/status", "clusterserviceclasses/status", "clusterserviceplans/status", "serviceinstances/status", "serviceinstances/reference", "servicebindings/status",]
      verbs: ["update"]
    - apiGroups: ["storage.k8s.io"]
      resources:  ["storageclasses"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["alicloud.com"]
      resources:  ["*"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["policy"]
      resources:  ["poddisruptionbudgets"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["metrics.k8s.io"]
      resources: ["pods"]
      verbs: ["get", "watch", "list"]
    - apiGroups: ["networking.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["config.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["rbac.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["istio.alibabacloud.com"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["authentication.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["log.alibabacloud.com"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["monitoring.kiali.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["kiali.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["apiextensions.k8s.io"]
      resources: ["customresourcedefinitions"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["serving.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["eventing.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["messaging.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["sources.eventing.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["tekton.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["alert.alibabacloud.com"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]

    Jika Anda memerlukan kontrol akses RBAC detail halus, Anda dapat membuat instance ClusterRole kustom. Untuk informasi lebih lanjut, lihat RBAC. Kemudian, pada halaman pengelolaan izin di Konsol Container Compute Service, pilih Custom Role dan pilih nama ClusterRole kustom dari daftar drop-down. Untuk informasi lebih lanjut, lihat Membuat kebijakan otorisasi RBAC kustom.

Skenario 2: Memberikan izin kepada pengembang untuk aplikasi dalam kluster

Objek otorisasi hanya memerlukan izin untuk mengoperasikan objek sumber daya Kubernetes di kluster ACS (otorisasi RBAC) dan tidak memerlukan izin akses ke sumber daya cloud.

Penting

Sebelum memberikan izin RBAC, objek otorisasi harus memiliki setidaknya izin read-only untuk layanan kontainer pada kluster target (otorisasi RAM). Jika Anda mengatur Resource ke "*", Anda memberikan izin Action yang ditentukan kepada Pengguna RAM atau Peran RAM pada semua kluster ACK, termasuk kluster ACS. Jangan mengatur Resource ke "*" kecuali Anda sepenuhnya memahami cakupan dan dampak otorisasi serta berniat memberikan akses penuh.

  1. RAM Authorization

    Di Konsol RAM, buat kebijakan kustom dan berikan kebijakan tersebut kepada Pengguna RAM atau Peran RAM target. Untuk informasi lebih lanjut, lihat Memberikan izin RAM kepada Pengguna RAM atau Peran RAM. Konten kebijakan kustom adalah sebagai berikut:

    {
      "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "acc:DescribeCommodityStatus",
                "acc:CheckServiceRole",
                "acc:DescribeCloudProducts",
                "acc:DescribeRegions",
                "acc:DescribeZones",
                "acc:GetInstancePrice",
                "acc:RecommendZones"
               ],
                "Resource": "*"
        },
        {
             "Effect": "Allow",
             "Action": "bssapi:GetPayAsYouGoPrice",
             "Resource": "*"
        },
        {
          "Action": [
            "cs:Get*",
            "cs:List*",
            "cs:Check*",
            "cs:Describe*"
          ],
          "Effect": "Allow",
          "Resource": [
            "acs:cs:*:*:cluster/<yourclusterID>"
          ]
         },
         {
           "Action": [
              "vpc:ListEnhanhcedNatGatewayAvailableZones",
              "vpc:DescribeEipAddresses"
           ],
              "Effect": "Allow",
              "Resource": "*"
          }
      ],
      "Version": "1"
    }

    Pada contoh di atas, ganti <yourclusterID> dengan ID kluster ACS Anda.

    Catatan

    Untuk memberikan objek otorisasi hanya izin read-only pada kluster ACS, gunakan contoh ini untuk menentukan ARN kluster ACS. Jangan berikan kebijakan sistem RAM AliyunCSReadOnlyAccess yang disediakan oleh ACK, karena kebijakan tersebut memberikan izin read-only pada semua kluster ACK dan terlalu luas untuk skenario ini.

  2. RBAC Authorization

    1. Di Konsol Container Compute Service, klik Permission Management di panel navigasi sebelah kiri. Pada tab RAM Users atau RAM Roles, temukan objek otorisasi dan klik Manage Permissions.

    2. Pada kotak dialog yang muncul, klik +Add Permission, atur pengelolaan izin untuk kluster target dan namespace yang sesuai menjadi Developer, lalu klik Submit Authorization untuk menyelesaikan konfigurasi.

      developer

    Setelah menyambungkan peran yang telah ditentukan sebelumnya, ACS secara otomatis membuat instance ClusterRoleBinding di kluster yang sesuai dengan identitas objek yang diberi otorisasi. Izin RBAC untuk peran pengembang yang telah ditentukan sebelumnya adalah sebagai berikut.

    Contoh izin RBAC untuk peran pengembang yang telah ditentukan sebelumnya

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: cs:ns:dev
    rules:
    - apiGroups: [""]
      resources:  ["pods", "pods/attach", "pods/exec", "pods/portforward", "pods/proxy"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: [""]
      resources:  ["configmaps", "endpoints", "persistentvolumeclaims", "replicationcontrollers", "replicationcontrollers/scale", "secrets", "serviceaccounts", "services", "services/proxy"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: [""]
      resources:  ["events", "replicationcontrollers/status", "pods/log", "pods/status"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["apps"]
      resources:  ["daemonsets", "deployments", "deployments/rollback", "deployments/scale", "replicasets", "replicasets/scale", "statefulsets"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["autoscaling"]
      resources:  ["horizontalpodautoscalers"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["batch"]
      resources:  ["cronjobs", "jobs"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["extensions"]
      resources:  ["daemonsets", "deployments", "deployments/rollback", "deployments/scale","ingresses","replicasets", "replicasets/scale", "replicationcontrollers/scale"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["networking.k8s.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["servicecatalog.k8s.io"]
      resources:  ["clusterserviceclasses", "clusterserviceplans", "clusterservicebrokers", "serviceinstances", "servicebindings"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["servicecatalog.k8s.io"]
      resources:  ["clusterservicebrokers/status", "clusterserviceclasses/status", "clusterserviceplans/status", "serviceinstances/status", "serviceinstances/reference", "servicebindings/status",]
      verbs: ["update"]
    - apiGroups: ["alicloud.com"]
      resources:  ["*"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["policy"]
      resources:  ["poddisruptionbudgets"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["networking.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["config.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["rbac.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["istio.alibabacloud.com"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["authentication.istio.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["log.alibabacloud.com"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["monitoring.kiali.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["kiali.io"]
      resources:  ["*"]
      verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["apiextensions.k8s.io"]
      resources: ["customresourcedefinitions"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["serving.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["eventing.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["messaging.knative.dev"]
      resources: ["*"]
    verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["sources.eventing.knative.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["tekton.dev"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
    - apiGroups: ["alert.alibabacloud.com"]
      resources: ["*"]
      verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]

Skenario 3: Memberikan izin kepada administrator izin untuk aplikasi dalam kluster

Objek otorisasi perlu mengelola izin RBAC Pengguna RAM atau Peran RAM lainnya. Secara default, Pengguna RAM atau Peran RAM tidak memiliki izin untuk memberikan izin RBAC kepada Pengguna RAM atau Peran RAM lainnya. Ketika objek otorisasi membuka halaman pengelolaan izin di Konsol Container Compute Service, jika antarmuka menampilkan pesan The Current RAM User Does Not Have Permission Management Permissions. Contact Your Alibaba Cloud Account Or A Permission Administrator To Grant The Permissions, ini menunjukkan bahwa objek otorisasi kekurangan izin RAM yang diperlukan atau izin administrator RBAC untuk kluster tersebut.

  1. Otorisasi RAM

    Pastikan objek otorisasi diberikan izin RAM yang diperlukan. Kebijakan harus mencakup izin untuk:

    • Menampilkan daftar Pengguna RAM atau Peran RAM lainnya.

    • Memberikan kebijakan otorisasi RAM kepada Pengguna RAM atau Peran RAM tertentu.

    • Menampilkan konfigurasi izin RBAC Kubernetes Pengguna RAM atau Peran RAM tertentu.

    • Melakukan otorisasi RBAC Kubernetes.

    Login ke Konsol RAM untuk memberikan izin RAM yang sesuai kepada Pengguna RAM atau Peran RAM tertentu. Untuk informasi lebih lanjut, lihat Memberikan izin RAM kepada Pengguna RAM atau Peran RAM. Contoh kebijakan RAM kustom adalah sebagai berikut.

    {
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
                "acc:DescribeCommodityStatus",
                "acc:CheckServiceRole",
                "acc:DescribeCloudProducts",
                "acc:DescribeRegions",
                "acc:DescribeZones",
                "acc:GetInstancePrice",
                "acc:RecommendZones"
               ],
                "Resource": "*"
          },
          {
             "Effect": "Allow",
             "Action": "bssapi:GetPayAsYouGoPrice",
             "Resource": "*"
          },
          {
                "Action": [
                    "ram:Get*",
                    "ram:List*",
                    "cs:GetUserPermissions",
                    "cs:GetSubUsers",
                    "cs:GrantPermission",
                    "cs:CheckServiceRole"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "ram:AttachPolicyToUser",
                    "ram:AttachPolicyToRole"
                ],
                "Effect": "Allow",
                "Resource":  [
                    "acs:ram:*:*:policy/xxxx", # Ganti xxxx dengan nama kebijakan RAM yang perlu Anda sambungkan. Jika Anda menggantinya dengan *, berarti objek otorisasi memiliki kemampuan untuk menyambungkan semua kebijakan RAM.
                    "acs:*:*:*:user/*"
                ]
            },
            {
                "Action": [
                     "vpc:ListEnhanhcedNatGatewayAvailableZones",
                     "vpc:DescribeEipAddresses"
                ],
                "Effect": "Allow",
                "Resource": "*"
            }
        ],
        "Version": "1"
    }
  2. RBAC Authorization

    1. Di Konsol Container Compute Service, klik Permission Management di panel navigasi sebelah kiri. Pada tab RAM Users atau RAM Roles, temukan objek otorisasi dan klik Manage Permissions.

    2. Pada kotak dialog yang muncul, klik +Add Permission, atur pengelolaan izin untuk kluster target dan namespace yang sesuai menjadi Administrator atau peran kustom cluster-admin, lalu klik Submit Authorization untuk menyelesaikan konfigurasi.

      Catatan

      Akun Alibaba Cloud (akun root) dan pembuat kluster secara default terikat pada peran cluster-admin dan memiliki akses ke semua objek sumber daya Kubernetes di kluster.

      cluster-admin

Setelah memberikan izin RAM dan RBAC di atas kepada objek otorisasi, objek tersebut dapat mengelola otorisasi RBAC untuk Pengguna RAM atau Peran RAM lainnya dalam cakupan izin yang ditentukan. Untuk informasi lebih lanjut, lihat Memberikan izin RAM kepada Pengguna RAM atau Peran RAM.

Deskripsi Action otorisasi

Nama izin (Action)

Deskripsi

acc:CheckServiceRole

Memeriksa apakah akun telah mengotorisasi produk untuk mengasumsikan ServiceRole guna mengakses sumber daya cloud akun lain.

acc:DescribeCommodityStatus

Memeriksa apakah produk ACS telah diaktifkan untuk akun.

Nama izin (Action)

Deskripsi

bssapi:GetPayAsYouGoPrice

Menanyakan layanan penetapan harga untuk produk bayar sesuai penggunaan.

ram:ListUserBasicInfos

Menanyakan informasi dasar semua Pengguna RAM.

ram:ListRoles

Menanyakan informasi dasar semua Peran RAM.

Catatan
  1. Untuk deskripsi Action otorisasi untuk ACK, lihat Informasi otorisasi.

  2. Topik ini hanya sebagai referensi otorisasi. Sebelum menulis aturan otorisasi, pastikan Anda memahami Action otorisasi untuk ACK dan menerapkan Prinsip Hak Istimewa Minimum (PoLP). Untuk informasi lebih lanjut, lihat Informasi otorisasi.

  3. Jika Anda tidak menentukan ID kluster target dan mengatur cakupan otorisasi ke "*", Anda memberikan izin untuk mengoperasikan semua kluster ACK, tidak termasuk kluster ACS. Berikan izin ini dengan hati-hati.