Azure Arc özellikli Kubernetes kümelerinde Azure RBAC kullanma (önizleme)
Kubernetes ClusterRoleBinding ve RoleBinding nesne türleri, Kubernetes'te yerel olarak yetkilendirme tanımlamaya yardımcı olur. Bu özelliği kullanarak Azure'daki Microsoft Entra Id ve rol atamalarını kullanarak kümedeki yetkilendirme denetimlerini denetleyebilirsiniz. Azure rol atamaları, hangi kullanıcıların dağıtım, pod ve hizmet gibi Kubernetes nesnelerini okuyabileceğini, yazabileceğini ve silebileceğini ayrıntılı olarak denetlemenize olanak sağlar.
Bu özelliğe kavramsal genel bakış için bkz . Azure Arc özellikli Kubernetes üzerinde Azure RBAC.
Önemli
Azure Arc özellikli Kubernetes önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. Azure Arc özellikli Kubernetes önizlemeleri, müşteri desteği kapsamındadır.
Önkoşullar
Azure CLI'yi yükleyin veya en son sürüme yükseltin.
Azure CLI uzantısının
connectedk8s
en son sürümünü yükleyin:az extension add --name connectedk8s
connectedk8s
Uzantı zaten yüklüyse, aşağıdaki komutu kullanarak uzantıyı en son sürüme güncelleştirebilirsiniz:az extension update --name connectedk8s
Mevcut Azure Arc özellikli Kubernetes kümesini bağlama:
- Henüz bir kümeyi bağlamadıysanız hızlı başlangıcımızı kullanın.
- Aracılarınızı en son sürüme yükseltin.
Not
Bu özelliği Red Hat OpenShift veya kullanıcının kümenin API sunucusuna erişimi olmayan Elastic Kubernetes Service veya Google Kubernetes Engine gibi bulut sağlayıcılarının yönetilen Kubernetes teklifleri için ayarlayamazsınız. Azure Kubernetes Service (AKS) kümeleri için bu özellik yerel olarak kullanılabilir ve AKS kümesinin Azure Arc'a bağlanması gerekmez.
Microsoft Entra uygulamalarını ayarlama
Sunucu uygulaması oluşturma
Yeni bir Microsoft Entra uygulaması oluşturun ve değerini
appId
alın. Bu değer, sonraki adımlarda olarakserverApplicationId
kullanılır.CLUSTER_NAME="<name-of-arc-connected-cluster>" TENANT_ID="<tenant>" SERVER_UNIQUE_SUFFIX="<identifier_suffix>" SERVER_APP_ID=$(az ad app create --display-name "${CLUSTER_NAME}Server" --identifier-uris "api://${TENANT_ID}/${SERVER_UNIQUE_SUFFIX}" --query appId -o tsv) echo $SERVER_APP_ID
Sunucu uygulamasına "Oturum açma ve kullanıcı profilini okuma" API izinleri vermek için bu JSON dosyasını kopyalayın ve oauth2-permissions.json adlı bir dosyaya kaydedin:
{ "oauth2PermissionScopes": [ { "adminConsentDescription": "Sign in and read user profile", "adminConsentDisplayName": "Sign in and read user profile", "id": "<paste_the_SERVER_APP_ID>", "isEnabled": true, "type": "User", "userConsentDescription": "Sign in and read user profile", "userConsentDisplayName": "Sign in and read user profile", "value": "User.Read" } ] }
Uygulamanın grup üyeliği taleplerini güncelleştirin. Komutları dosyayla aynı dizinde
oauth2-permissions.json
çalıştırın. Azure Arc özellikli Kubernetes için RBAC'nin AzureADMyOrg olarak ayarlanması gerekirsignInAudience
:az ad app update --id "${SERVER_APP_ID}" --set groupMembershipClaims=All az ad app update --id ${SERVER_APP_ID} --set api=@oauth2-permissions.json az ad app update --id ${SERVER_APP_ID} --set signInAudience=AzureADMyOrg SERVER_OBJECT_ID=$(az ad app show --id "${SERVER_APP_ID}" --query "id" -o tsv) az rest --method PATCH --headers "Content-Type=application/json" --uri https://graph.microsoft.com/v1.0/applications/${SERVER_OBJECT_ID}/ --body '{"api":{"requestedAccessTokenVersion": 1}}'
Bir hizmet sorumlusu oluşturun ve alan değerini alın
password
. Bu değer daha sonra kümede bu özelliği etkinleştirirken olduğu gibiserverApplicationSecret
gereklidir. Bu gizli dizi varsayılan olarak bir yıl geçerlidir ve bundan sonra döndürülür. Özel süre sonu süresi ayarlamak için kullanınaz ad sp credential reset
:az ad sp create --id "${SERVER_APP_ID}" SERVER_APP_SECRET=$(az ad sp credential reset --id "${SERVER_APP_ID}" --query password -o tsv)
kullanarak
az ad app permission
uygulamaya "Oturum aç ve kullanıcı profilini oku" API izinleri verin:az ad app permission add --id "${SERVER_APP_ID}" --api 00000003-0000-0000-c000-000000000000 --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope az ad app permission grant --id "${SERVER_APP_ID}" --api 00000003-0000-0000-c000-000000000000 --scope User.Read
Not
Azure uygulama yöneticisinin bu adımı çalıştırması gerekir.
Bu özelliğin üretim ortamında kullanılması için her küme için farklı bir sunucu uygulaması oluşturmanızı öneririz.
İstemci uygulaması oluşturma
Yeni bir Microsoft Entra uygulaması oluşturun ve değerini
appId
alın. Bu değer, sonraki adımlarda olarakclientApplicationId
kullanılır.CLIENT_UNIQUE_SUFFIX="<identifier_suffix>" CLIENT_APP_ID=$(az ad app create --display-name "${CLUSTER_NAME}Client" --is-fallback-public-client --public-client-redirect-uris "api://${TENANT_ID}/${CLIENT_UNIQUE_SUFFIX}" --query appId -o tsv) echo $CLIENT_APP_ID
Bu istemci uygulaması için bir hizmet sorumlusu oluşturun:
az ad sp create --id "${CLIENT_APP_ID}"
Sunucu uygulamasının
oAuthPermissionId
değerini alın:az ad app show --id "${SERVER_APP_ID}" --query "api.oauth2PermissionScopes[0].id" -o tsv
İstemci uygulaması için gerekli izinleri verin. Azure Arc özellikli Kubernetes için RBAC'nin AzureADMyOrg olarak ayarlanması gerekir
signInAudience
:az ad app permission add --id "${CLIENT_APP_ID}" --api "${SERVER_APP_ID}" --api-permissions <oAuthPermissionId>=Scope RESOURCE_APP_ID=$(az ad app show --id "${CLIENT_APP_ID}" --query "requiredResourceAccess[0].resourceAppId" -o tsv) az ad app permission grant --id "${CLIENT_APP_ID}" --api "${RESOURCE_APP_ID}" --scope User.Read az ad app update --id ${CLIENT_APP_ID} --set signInAudience=AzureADMyOrg CLIENT_OBJECT_ID=$(az ad app show --id "${CLIENT_APP_ID}" --query "id" -o tsv) az rest --method PATCH --headers "Content-Type=application/json" --uri https://graph.microsoft.com/v1.0/applications/${CLIENT_OBJECT_ID}/ --body '{"api":{"requestedAccessTokenVersion": 1}}'
Sunucu uygulaması için rol ataması oluşturma
Sunucu uygulaması, istekte Microsoft.Authorization/*/read
bulunan Kubernetes nesnelerinde istekte bulunan kullanıcının yetkilendirildiğini onaylayabilmesi için izinlere ihtiyaç duyar.
aşağıdaki içeriklere sahip accessCheck.json adlı bir dosya oluşturun:
{ "Name": "Read authorization", "IsCustom": true, "Description": "Read authorization", "Actions": ["Microsoft.Authorization/*/read"], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/<subscription-id>" ] }
değerini gerçek abonelik kimliğiyle değiştirin
<subscription-id>
.Yeni özel rolü oluşturmak için aşağıdaki komutu çalıştırın:
ROLE_ID=$(az role definition create --role-definition ./accessCheck.json --query id -o tsv)
Oluşturduğunuz rolü kullanarak sunucu uygulamasında olduğu gibi
assignee
bir rol ataması oluşturun:az role assignment create --role "${ROLE_ID}" --assignee "${SERVER_APP_ID}" --scope /subscriptions/<subscription-id>
Kümede Azure RBAC’yi etkinleştirme
Aşağıdaki komutu çalıştırarak Azure Arc özellikli Kubernetes kümenizde Azure rol tabanlı erişim denetimini (RBAC) etkinleştirin:
az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features azure-rbac --app-id "${SERVER_APP_ID}" --app-secret "${SERVER_APP_SECRET}"
Not
Yukarıdaki komutu çalıştırmadan önce, makinedeki dosyanın Azure RBAC özelliğini etkinleştirebileceğiniz kümeyi işaret ettiğinden emin olun kubeconfig
.
Azure RBAC yerine Kubernetes yerel ClusterRoleBinding
ve RoleBinding
nesneleri kullanarak yetkilendirme denetimlerinden geçen kullanıcı adları, e-postalar ve OpenID bağlantılarının virgülle ayrılmış listesi için yukarıdaki komutla kullanın--skip-azure-rbac-list
.
Belirtim üzerinde apiserver
hiçbir reconcinin çalışmadığı genel küme
Kümenin her ana düğümüne SSH ekleyin ve aşağıdaki adımları uygulayın:
Statik podunuz
kube-apiserver
varsa:azure-arc-guard-manifests
Ad alanında gizlikube-system
dizi iki dosya içerir:guard-authn-webhook.yaml
veguard-authz-webhook.yaml
. Bu dosyaları düğümün/etc/guard
dizinine kopyalayın.sudo mkdir -p /etc/guard kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authn-webhook.yaml"' | base64 -d > /etc/guard/guard-authn-webhook.yaml kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authz-webhook.yaml"' | base64 -d > /etc/guard/guard-authz-webhook.yaml
apiserver
Bildirimi düzenleme modunda açın:sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
altına
volumes
aşağıdaki belirtimi ekleyin:- name: azure-rbac hostPath: path: /etc/guard type: Directory
altına
volumeMounts
aşağıdaki belirtimi ekleyin:- mountPath: /etc/guard name: azure-rbac readOnly: true
Statik
kube-apiserver
podunuz değilse:apiserver
Bildirimi düzenleme modunda açın:sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
altına
volumes
aşağıdaki belirtimi ekleyin:- name: azure-rbac secret: secretName: azure-arc-guard-manifests
altına
volumeMounts
aşağıdaki belirtimi ekleyin:- mountPath: /etc/guard name: azure-rbac readOnly: true
Aşağıdaki
apiserver
bağımsız değişkenleri ekleyin:- --authentication-token-webhook-config-file=/etc/guard/guard-authn-webhook.yaml - --authentication-token-webhook-cache-ttl=5m0s - --authorization-webhook-cache-authorized-ttl=5m0s - --authorization-webhook-config-file=/etc/guard/guard-authz-webhook.yaml - --authorization-webhook-version=v1 - --authorization-mode=Node,RBAC,Webhook
Kubernetes kümesi sürüm 1.19.0 veya üzeriyse, aşağıdaki
apiserver
bağımsız değişkeni de ayarlamanız gerekir:- --authentication-token-webhook-version=v1
Podu güncelleştirmek için düzenleyiciyi
apiserver
kaydedin ve kapatın.
Küme API'si kullanılarak oluşturulan küme
kimlik doğrulaması ve yetkilendirme web kancası yapılandırma dosyalarını içeren koruma gizli dizisini iş yükü kümesinden makinenize kopyalayın:
kubectl get secret azure-arc-guard-manifests -n kube-system -o yaml > azure-arc-guard-manifests.yaml
namespace
azure-arc-guard-manifests.yaml dosyasındaki alanı, iş yükü kümelerinin oluşturulması için özel kaynakları uyguladığınız yönetim kümesindeki ad alanıyla değiştirin.Bu bildirimi uygula:
kubectl apply -f azure-arc-guard-manifests.yaml
KubeadmControlPlane
komutunu çalıştırarakkubectl edit kcp <clustername>-control-plane
nesnesini düzenleyin:altına
files
aşağıdaki kod parçacığını ekleyin:- contentFrom: secret: key: guard-authn-webhook.yaml name: azure-arc-guard-manifests owner: root:root path: /etc/kubernetes/guard-authn-webhook.yaml permissions: "0644" - contentFrom: secret: key: guard-authz-webhook.yaml name: azure-arc-guard-manifests owner: root:root path: /etc/kubernetes/guard-authz-webhook.yaml permissions: "0644"
altına
apiServer
>extraVolumes
aşağıdaki kod parçacığını ekleyin:- hostPath: /etc/kubernetes/guard-authn-webhook.yaml mountPath: /etc/guard/guard-authn-webhook.yaml name: guard-authn readOnly: true - hostPath: /etc/kubernetes/guard-authz-webhook.yaml mountPath: /etc/guard/guard-authz-webhook.yaml name: guard-authz readOnly: true
altına
apiServer
>extraArgs
aşağıdaki kod parçacığını ekleyin:authentication-token-webhook-cache-ttl: 5m0s authentication-token-webhook-config-file: /etc/guard/guard-authn-webhook.yaml authentication-token-webhook-version: v1 authorization-mode: Node,RBAC,Webhook authorization-webhook-cache-authorized-ttl: 5m0s authorization-webhook-config-file: /etc/guard/guard-authz-webhook.yaml authorization-webhook-version: v1
Nesneyi güncelleştirmek
KubeadmControlPlane
için kaydedin ve kapatın. Bu değişikliklerin iş yükü kümesinde görünmesini bekleyin.
Kullanıcıların kümeye erişmesi için rol atamalarını oluşturma
Azure Arc özellikli Kubernetes kaynağının sahipleri, diğer kullanıcılara Kubernetes kümesine erişim vermek için yerleşik rolleri veya özel rolleri kullanabilir.
Yerleşik roller
Rol | Açıklama |
---|---|
Azure Arc Kubernetes Viewer | Ad alanında çoğu nesneyi görmek için salt okunur erişime izin verir. Gizli diziler üzerindeki izin ad alanında kimlik bilgilerine erişimi etkinleştireceğinden bu read rol gizli dizileri görüntülemeye ServiceAccount izin vermez. Bu kimlik bilgileri de bu değer (ayrıcalık yükseltme biçimi) aracılığıyla ServiceAccount API erişimine izin verir. |
Azure Arc Kubernetes Yazıcı | Ad alanı içindeki çoğu nesneye okuma/yazma erişimine izin verir. Bu rol, rollerin veya rol bağlamalarının görüntülenmesine veya değiştirilmesine izin vermez. Ancak, bu rol gizli dizilere erişmeye ve podları ad alanında herhangi bir ServiceAccount değer olarak çalıştırmaya olanak tanır, bu nedenle ad alanında herhangi bir ServiceAccount değerin API erişim düzeylerini kazanmak için kullanılabilir. |
Azure Arc Kubernetes Yönetici | Yönetici erişimine izin verir. aracılığıyla RoleBinding bir ad alanı içinde verilmesi amaçlanmıştır. içinde RoleBinding kullanıyorsanız, ad alanında rol ve rol bağlamaları oluşturma özelliği de dahil olmak üzere ad alanı içindeki kaynakların çoğuna okuma/yazma erişimi sağlar. Bu rol, kaynak kotasına veya ad alanının kendisine yazma erişimine izin vermez. |
Azure Arc Kubernetes Kümesi Yönetici | Süper kullanıcı erişiminin herhangi bir kaynakta herhangi bir eylemi yürütmesine izin verir. içinde ClusterRoleBinding kullandığınızda, kümedeki ve tüm ad alanlarındaki her kaynak üzerinde tam denetim sağlar. içinde RoleBinding kullandığınızda, rol bağlamasının ad alanında ad alanı da dahil olmak üzere tüm kaynaklar üzerinde tam denetim sağlar. |
Azure portalda , küme kaynağının Erişim Denetimi (IAM) bölmesinde Azure Arc özellikli Kubernetes kümesi kapsamında rol atamaları oluşturabilirsiniz. Aşağıdaki Azure CLI komutlarını da kullanabilirsiniz:
az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID
Bu komutlarda, AZURE-AD-ENTITY-ID
bir kullanıcı adı (örneğin, testuser@mytenant.onmicrosoft.com
) ve hatta appId
hizmet sorumlusunun değeri olabilir.
Aşağıda, küme içindeki belirli bir ad alanı kapsamında bir rol ataması oluşturma örneği verilmişti:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>
Not
Azure portalını veya Azure CLI'yi kullanarak küme kapsamında rol atamaları oluşturabilirsiniz. Ancak, ad alanları kapsamında rol atamaları oluşturmak için yalnızca Azure CLI kullanılabilir.
Özel roller
Rol atamalarında kullanmak üzere kendi rol tanımınızı oluşturmayı seçebilirsiniz.
Kullanıcının yalnızca dağıtımları okumasına izin veren rol tanımının aşağıdaki örneğini inceleyin. Daha fazla bilgi için rol tanımı oluşturmak için kullanabileceğiniz veri eylemlerinin tam listesine bakın.
Aşağıdaki JSON nesnesini custom-role.json adlı bir dosyaya kopyalayın. Yer tutucuyu <subscription-id>
gerçek abonelik kimliğiyle değiştirin. Özel rol, veri eylemlerinden birini kullanır ve rol atamasının oluşturulduğu kapsamdaki (küme veya ad alanı) tüm dağıtımları görüntülemenizi sağlar.
{
"Name": "Arc Deployment Viewer",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<subscription-id>"
]
}
custom-role.json kaydettiğiniz klasörden aşağıdaki komutu çalıştırarak rol tanımını oluşturun:
az role definition create --role-definition @custom-role.json
Bu özel rol tanımını kullanarak rol ataması oluşturun:
az role assignment create --role "Arc Deployment Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>
Kubectl'i kullanıcı kimlik bilgileriyle yapılandırma
Kümeye erişmek için ihtiyacınız olan kubeconfig dosyasını almanın iki yolu vardır:
- Azure Arc özellikli Kubernetes kümesinin küme Bağlan özelliğini (
az connectedk8s proxy
) kullanırsınız. - Küme yöneticisi kubeconfig dosyasını diğer tüm kullanıcılarla paylaşır.
Küme bağlantısını kullanma
Ara sunucu işlemini başlatmak için aşağıdaki komutu çalıştırın:
az connectedk8s proxy -n <clusterName> -g <resourceGroupName>
Ara sunucu işlemi çalıştırıldıktan sonra, isteklerinizi kümeye göndermeye başlamak için konsolunuzda başka bir sekme açabilirsiniz.
Paylaşılan kubeconfig dosyası kullanma
Paylaşılan bir kubeconfig kullanmak için Kubernetes sürümünüze bağlı olarak biraz farklı adımlar gerekir.
Kullanıcının kimlik bilgilerini ayarlamak için aşağıdaki komutu çalıştırın:
kubectl config set-credentials <testuser>@<mytenant.onmicrosoft.com> \ --auth-provider=azure \ --auth-provider-arg=environment=AzurePublicCloud \ --auth-provider-arg=client-id=<clientApplicationId> \ --auth-provider-arg=tenant-id=<tenantId> \ --auth-provider-arg=apiserver-id=<serverApplicationId>
Daha önce oluşturduğunuz kubeconfig dosyasını açın. altında
contexts
, kümeyle ilişkili bağlamın önceki adımda oluşturduğunuz kullanıcı kimlik bilgilerini işaret ettiğini doğrulayın. Geçerli bağlamı bu kullanıcı kimlik bilgilerine ayarlamak için aşağıdaki komutu çalıştırın:kubectl config set-context --current=true --user=<testuser>@<mytenant.onmicrosoft.com>
altında yapılandırma modu ayarını
user
>config
ekleyin:name: testuser@mytenant.onmicrosoft.com user: auth-provider: config: apiserver-id: $SERVER_APP_ID client-id: $CLIENT_APP_ID environment: AzurePublicCloud tenant-id: $TENANT_ID config-mode: "1" name: azure
Not
Exec eklentisi , adresine gönderilecek kullanıcı kimlik bilgilerini almak için bir dış komut yürütmeye olanak tanıyan kubectl
bir Kubernetes kimlik doğrulama stratejisidir apiserver
. Kubernetes sürüm 1.26'dan başlayarak, varsayılan Azure yetkilendirme eklentisi artık ve kubectl
'ye client-go
dahil değildir. Sonraki sürümlerde, kullanıcı kimlik bilgilerini almak için exec eklentisini kullanmak için Azure kimlik doğrulamasını uygulayan bir client-go
kimlik bilgisi (exec) eklentisi olan Azure Kubelogin'i kullanmanız gerekir.
Azure Kubelogin'i yükleme:
Windows veya Mac için Azure Kubelogin yükleme yönergelerini izleyin.
Linux veya Ubuntu için kubelogin'in en son sürümünü indirin ve aşağıdaki komutları çalıştırın:
curl -LO https://github.com/Azure/kubelogin/releases/download/"$KUBELOGIN_VERSION"/kubelogin-linux-amd64.zip unzip kubelogin-linux-amd64.zip sudo mv bin/linux_amd64/kubelogin /usr/local/bin/ sudo chmod +x /usr/local/bin/kubelogin
Kubelogin'i uygun oturum açma modunu kullanacak şekilde dönüştürün. Örneğin, bir Microsoft Entra kullanıcısı ile cihaz koduyla oturum açma için komutlar aşağıdaki gibi olacaktır:
export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Kümeye istek gönderme
Herhangi bir
kubectl
komutu çalıştırın. Örneğin:kubectl get nodes
kubectl get pods
Tarayıcı tabanlı kimlik doğrulaması istendikten sonra cihaz oturum açma URL'sini (
https://microsoft.com/devicelogin
) kopyalayın ve web tarayıcınızda açın.Konsolunuza yazdırılan kodu girin. Kodu kopyalayıp terminalinizde cihaz kimlik doğrulaması girişi istemine yapıştırın.
Kullanıcı adını (
testuser@mytenant.onmicrosoft.com
) ve ilişkili parolayı girin.Bunun gibi bir hata iletisi görürseniz, istenen kaynağa erişme yetkiniz yok demektir:
Error from server (Forbidden): nodes is forbidden: User "testuser@mytenant.onmicrosoft.com" cannot list resource "nodes" in API group "" at the cluster scope: User doesn't have access to the resource in Azure. Update role assignment to allow access.
Bir yöneticinin, bu kullanıcıya kaynak üzerinde erişim izni veren yeni bir rol ataması oluşturması gerekir.
Koşullu Erişimi Microsoft Entra Id ile kullanma
Microsoft Entra ID'yi Azure Arc özellikli Kubernetes kümenizle tümleştirdiğinizde, kümenize erişimi denetlemek için Koşullu Erişim'i de kullanabilirsiniz.
Not
Microsoft Entra Koşullu Erişim bir Microsoft Entra ID P2 özelliğidir.
Kümeyle kullanılacak örnek bir Koşullu Erişim ilkesi oluşturmak için:
Azure portalının üst kısmında Microsoft Entra Id'yi arayın ve seçin.
Sol taraftaki Microsoft Entra Id menüsünde Kurumsal uygulamalar'ı seçin.
Sol taraftaki kurumsal uygulamalar menüsünde Koşullu Erişim'i seçin.
Sol taraftaki Koşullu Erişim menüsünde İlkeler>Yeni ilke'yi seçin.
İlke için arc-k8s-policy gibi bir ad girin.
Kullanıcı ve gruplar'ı seçin. Ekle'nin altında Kullanıcıları ve grupları seç'i seçin. Ardından ilkeyi uygulamak istediğiniz kullanıcıları ve grupları seçin. Bu örnek için kümenize yönetici erişimi olan Microsoft Entra grubunu seçin.
Bulut uygulamaları veya eylemleri’ni seçin. Ekle'nin altında Uygulama seç'i seçin. Ardından daha önce oluşturduğunuz sunucu uygulamasını arayın ve seçin.
Erişim denetimleri'nin altında Ver'i seçin. Erişim>ver Cihazın uyumlu olarak işaretlenmesini gerektir'i seçin.
İlkeyi etkinleştir'in altında OluşturmaDa'yı> seçin.
Kümeye yeniden erişin. Örneğin, kümedeki kubectl get nodes
düğümleri görüntülemek için komutunu çalıştırın:
kubectl get nodes
Yeniden oturum açmak için yönergeleri izleyin. Hata iletisinde başarıyla oturum açtığınız ancak yöneticinizin kaynağa erişmek için erişim isteyen cihazın Microsoft Entra Id tarafından yönetilmesini gerektirdiğini belirtir. Şu adımları izleyin:
Azure portalında Microsoft Entra Id'ye gidin.
Kurumsal uygulamalar'ı seçin. Ardından Etkinlik'in altında Oturum açmalar'ı seçin.
En üstteki girdide Durum başarısız oldu ve Koşullu Erişim için Başarı gösterildi. Girdiyi seçin ve ardından Ayrıntılar'da Koşullu Erişim'i seçin. Koşullu Erişim ilkenizin listelendiğine dikkat edin.
Microsoft Entra Id ile tam zamanında küme erişimini yapılandırma
Küme erişim denetimi için bir diğer seçenek de tam zamanında istekler için Privileged Identity Management (PIM) kullanmaktır.
Not
Microsoft Entra PIM , bir Microsoft Entra ID P2 özelliğidir. Microsoft Entra ID SKU'ları hakkında daha fazla bilgi için fiyatlandırma kılavuzuna bakın.
Kümeniz için tam zamanında erişim isteklerini yapılandırmak için aşağıdaki adımları tamamlayın:
Azure portalının üst kısmında Microsoft Entra Id'yi arayın ve seçin.
Kiracı kimliğini not alın. Bu yönergelerin geri kalanı için bu kimliği olarak
<tenant-id>
adlandıracağız.Sol taraftaki Microsoft Entra Id menüsünde, Yönet'in altında Gruplar>Yeni grup'u seçin.
Grup türü için Güvenlik'in seçili olduğundan emin olun. myJITGroup gibi bir grup adı girin. Microsoft Entra rolleri bu gruba atanabilir (Önizleme) altında Evet'i seçin. Son olarak Oluştur'u seçin.
Gruplar sayfasına geri dönersiniz. Yeni oluşturduğunuz grubu seçin ve nesne kimliğini not alın. Bu yönergelerin geri kalanı için bu kimliği olarak
<object-id>
adlandıracağız.Azure portalında sol taraftaki Etkinlik menüsünde Ayrıcalıklı Erişim (Önizleme) seçeneğini belirleyin. Ardından Ayrıcalıklı Erişimi Etkinleştir'i seçin.
Erişim verme işlemine başlamak için Atama ekle'yi seçin.
Üye rolünü seçin ve küme erişimi vermek istediğiniz kullanıcıları ve grupları seçin. Bir grup yöneticisi bu atamaları istediği zaman değiştirebilir. Devam etmeye hazır olduğunuzda İleri'yi seçin.
Etkin atama türünü seçin, istenen süreyi seçin ve bir gerekçe belirtin. Devam etmeye hazır olduğunuzda Ata'yı seçin. Atama türleri hakkında daha fazla bilgi için bkz . Privileged Identity Management'ta ayrıcalıklı erişim grubu (önizleme) için uygunluk atama.
Atamaları yaptıktan sonra kümeye erişerek tam zamanında erişimin çalıştığını doğrulayın. Örneğin, komutunu kullanarak kubectl get nodes
kümedeki düğümleri görüntüleyin:
kubectl get nodes
Kimlik doğrulama gereksinimini not edin ve kimlik doğrulaması için adımları izleyin. Kimlik doğrulaması başarılı olursa şuna benzer bir çıktı görmeniz gerekir:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
NAME STATUS ROLES AGE VERSION
node-1 Ready agent 6m36s v1.18.14
node-2 Ready agent 6m42s v1.18.14
node-3 Ready agent 6m33s v1.18.14
Sunucu uygulamasının gizli dizisini yenileme
Sunucu uygulamasının hizmet sorumlusunun gizli dizisinin süresi dolduysa, döndürmeniz gerekir.
SERVER_APP_SECRET=$(az ad sp credential reset --id "${SERVER_APP_ID}" --query password -o tsv)
Sonraki adımlar
- Küme Bağlan kullanarak kümeye güvenli bir şekilde bağlanın.
- Arc özellikli Kubernetes'te Azure RBAC mimarisi hakkında bilgi edinin.