Container Compute Service (ACS), cloud kaynak işlemleri için Resource Access Management (RAM) ve kümeler içindeki Kubernetes kaynakları için rol tabanlı erişim kontrolü (RBAC) olmak üzere iki yetkilendirme katmanı kullanır. Bir RAM kullanıcı veya RAM rolünün kümeleri ve iş yüklerini yönetebilmesi için her iki katmandan da izinlere sahip olması gerekir.
| Görev | Yetkilendirme katmanı | Belgelendirme |
|---|---|---|
| Küme oluşturun, görüntüleyin veya silin | RAM | RAM kullanıcıya veya RAM role izin verin |
| Ekip üyesine pod'lar, Dağıtımlar veya Hizmetler için erişim izni verin | RAM + RBAC | RAM kullanıcılara veya RAM rollerine RBAC izinleri verin |
| Farklı pod'ların farklı cloud hizmetlerine erişmesini sağlayın | RAM (RRSA) | Pod'ların cloud hizmetlerine erişimini yetkilendirmek için RRSA kullanın |
| Bir bakım mühendisine küme ve uygulama erişimi ayarlayın | RAM + RBAC | Senaryo 1: Bakım mühendislerine kümeleri ve uygulamaları yönetme izni verin |
| Geliştiriciye ad alanı kapsamlı erişim ayarlayın | RAM + RBAC | Senaryo 2: Geliştiricilere kümelerinizi ve uygulamalarınızı yönetme izni verin |
| İzin yönetimini bir yöneticiye delege edin | RAM + RBAC | Senaryo 3: Yetkilendirme yöneticilerine RAM kullanıcıların ve RAM rollerin izinlerini yönetme izni verin |
İki katmanın birlikte çalışma şekli
ACS kümeleri, Container Service for Kubernetes (ACK) Sunucusuz küme türündedir. Tüm küme yönetimi çağrıları ACK API'lerini kullandığından hem cloud düzeyinde (RAM) hem de küme düzeyinde (RBAC) izinlerin yapılandırılmış olması gerekir.
| Katman | Kapsam | Kontrol eder | Şu yolla verilir |
|---|---|---|---|
| RAM yetkilendirme | Cloud kaynakları (kontrol düzlemi) | Küme yaşam döngüsü, RBAC yönetimi, izleme, günlükler ve olaylar | RAM sistem ilkeleri veya özel ilkeler |
| RBAC yetkilendirme | Kubernetes kaynakları (veri düzlemi) | İş yükleri, ağ, depolama, ad alanları, ConfigMap'ler ve Secret'lar | ACS konsolunda önceden tanımlanmış veya özel ClusterRoller |
RBAC izinlerini vermeden önce RAM yetkilendirmesini tamamlayın.
RAM yetkilendirmenin kapsamı
RAM yetkilendirme, küme bakım işlemleri için izinler sağlar:
Küme oluşturun, görüntüleyin ve silin
RBAC yetkilendirmeyi yönetin
Kümeleri izleyin ve günlükleri ve olayları yönetin
RBAC yetkilendirmenin kapsamı
RBAC yetkilendirme, Kubernetes kaynakları üzerinde ad alanı düzeyinde veya küme çapında izinler sağlar:
İş yükü kaynakları: Deployment, StatefulSet, Job, CronJob, pod, ReplicaSet ve HorizontalPodAutoscaler (HPA)
Ağ kaynakları: Service, Ingress ve NetworkPolicy
Depolama kaynakları: kalıcı birim (PV), kalıcı birim talebi (PVC) ve StorageClass
Diğer kaynaklar: Namespace, ConfigMap ve Secret
RAM yetkilendirme
Varsayılan olarak, RAM kullanıcılar ve RAM rolleri cloud hizmeti API'lerini çağıramaz. Gerekli erişimi sağlamak için RAM ilkelerini ekleyin.
Sistem ilkeleri
Sistem ilkeleri, bir hesaptaki tüm kümeler arasında bakım erişimi için uygun olan geniş, önceden tanımlanmış izinler sağlar. RAM kullanıcıya veya RAM role izin verin.
| Sistem ilkesi | Ne sağlar | Kapsam notu |
|---|---|---|
| AliyunCSFullAccess | Tüm ACK API işlemlerine tam erişim | Yalnızca ACS kümelerini değil, tüm ACK kümelerini içerir. Kubernetes kaynakları üzerinde RBAC izinleri sağlamaz. |
| AliyunCSReadOnlyAccess | Tüm ACK API işlemlerine salt okunur erişim | Yalnızca ACS kümelerini değil, tüm ACK kümelerini içerir. |
| AliyunACCFullAccess | Tüm ACS API işlemlerine tam erişim | Yalnızca ACS kümeleri. |
| AliyunACCReadOnlyAccess | Tüm ACS API işlemlerine salt okunur erişim | Yalnızca ACS kümeleri. |
| AliyunVPCReadOnlyAccess | Virtual Private Cloud (VPC) için salt okunur erişim | Bir ACS kümesi oluştururken VPC seçmek için gereklidir. |
| AliyunContainerRegistryFullAccess | Container Registry (ACR) içindeki konteyner görüntülerine tam erişim | Hesap çapında. |
| AliyunLogReadOnlyAccess | Simple Log Service (SLS) için salt okunur erişim | Denetim günlükleri için bir günlük projesi seçmek veya yapılandırma denetimi sonuçlarını görüntülemek için gereklidir. |
| AliyunRAMFullAccess | RAM için tam erişim | Diğer RAM kullanıcıların ve RAM rollerin yetkilendirmesini yönetmek için gereklidir. |
| AliyunEBSFullAccess | Elastic Block Storage (EBS) için tam erişim | Disk depolama özelliklerini kullanmak için gereklidir. |
| AliyunARMSReadOnlyAccess | Application Real-Time Monitoring Service (ARMS) için salt okunur erişim | Managed Service for Prometheus izleme verilerini görüntülemek için gereklidir. |
| AliyunKMSReadOnlyAccess | Key Management Service (KMS) için salt okunur erişim | Bir ACS kümesi oluştururken şifreleme anahtarlarını seçmek için gereklidir. |
AliyunCSFullAccess ve AliyunCSReadOnlyAccess, yalnızca ACS kümelerini değil, tüm ACK kümelerini kapsar. Bu ilkeleri eklemeden önce bu kapsamın uygun olup olmadığını değerlendirin.
Özel ilkeler
Özel ilkeler, belirli API işlemleri ve kaynaklar üzerinde ayrıntılı kontrol sağlar. RAM kullanıcıların veya RAM rollerin SDK tabanlı geliştirme için dar kapsamlı izinlere ihtiyacı olduğunda bunları kullanın.
Aşağıdaki örnek, myphotos adlı bir Object Storage Service (OSS) paketine salt okunur erişim sağlar:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo",
"oss:GetBucketTagging",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:GetObjectAcl"
],
"Resource": "acs:oss:*:*:myphotos/*"
}
]
}
RRSA ile pod düzeyinde erişim
Service Accounts için RAM Roller (RRSA), bir Kubernetes ServiceAccount ile bir RAM rolünü ilişkilendirir; böylece bu ServiceAccount'u kullanan pod'lar belirlenmiş cloud hizmeti API'lerini çağırabilir. Farklı pod'ların farklı cloud hizmetlerine erişimini yetkilendirmek için RRSA kullanın.
RBAC yetkilendirme
RAM yetkilendirme yapılandırıldıktan sonra, bir RAM kullanıcının veya RAM rolünün Kubernetes kaynaklarıyla ne yapabileceğini kontrol etmek için RBAC izinleri verin. RBAC izinlerini ACS konsolu yetkilendirme sayfasından atayın.
Önceden tanımlanmış roller
ACS, özel bir seçenekle birlikte aşağıdaki önceden tanımlanmış rolleri sağlar. Her biri bir ClusterRole ile eşleşir. RAM kullanıcılara veya RAM rollerine RBAC izinleri verin.
| Rol | Kapsam | Sağladıkları | Sağlamadıkları |
|---|---|---|---|
| Yönetici | Tüm ad alanları | Tüm kaynaklara okuma ve yazma erişimi | -- |
| Bakım mühendisi | Tüm ad alanları | Konsolda görünen kaynaklara okuma ve yazma erişimi; düğümlere, PV'lere, ad alanlarına ve kotalara salt okunur erişim | Düğümlere, PV'lere, ad alanlarına ve kotalara yazma erişimi |
| Geliştirici | Belirtilen veya tüm ad alanları | Konsolda görünen kaynaklara okuma ve yazma erişimi | Atanan ad alanı dışındaki erişim (ad alanı kapsamlı olduğunda) |
| Kısıtlı kullanıcı | Belirtilen veya tüm ad alanları | Konsolda görünen kaynaklara salt okunur erişim | Herhangi bir kaynağa yazma erişimi |
| Özel rol | ClusterRole tarafından tanımlanan | Seçilen ClusterRole tarafından belirlenen | ClusterRole'a dahil olmayan izinler |
Özel bir rol atamadan önce, yalnızca gerekli erişimin sağlandığını doğrulamak için ClusterRole izinlerini gözden geçirin. Bir RBAC rolünü özelleştirin.
Roller ve ClusterRoller
Kubernetes RBAC iki tür rol kaynağı kullanır:
Role -- tek bir ad alanı içindeki izinleri tanımlayan, ad alanı kapsamlı bir kaynak. Role oluştururken hedef ad alanını belirtin.
ClusterRole -- küme çapında izinleri tanımlayan, ad alanı kapsamı dışı bir kaynak.
Bir ClusterRole üç şekilde kullanılabilir:
Tek tek ad alanları içindeki ad alanı kapsamlı kaynaklar için izinler verin.
Tüm ad alanları genelindeki ad alanı kapsamlı kaynaklar için izinler verin.
Küme kapsamlı kaynaklar için izinler verin.
İzinler tek bir ad alanıyla sınırlıysa Role kullanın. İzinler tüm kümeyi kapsıyorsa ClusterRole kullanın.
ACK, RBAC izinleri vermek için yalnızca ClusterRollere izin verir. Roller RBAC yetkilendirmesi için kullanılamaz.
Özel bir ClusterRole oluşturmak için bkz. Bir RBAC rolünü özelleştirin. Bir ClusterRole'u bir RAM kullanıcıya veya RAM role eklemek için bkz. RAM kullanıcılara veya RAM rollerine RBAC izinleri verin.