Aracılığıyla paylaş


Azure CLI kullanarak Azure rolleri atama

Azure rol tabanlı erişim denetimi (Azure RBAC), Azure kaynaklarına erişimi yönetmek için kullandığınız yetkilendirme sistemidir. Erişim vermek için belirli bir kapsamdaki kullanıcılara, gruplara, hizmet sorumlularına veya yönetilen kimliklere roller atarsınız. Bu makalede Azure CLI kullanarak rollerin nasıl atandığı açıklanmaktadır.

Önkoşullar

Rolleri atamak için sahip olmanız gerekenler:

Azure rolü atama adımları

Rol atamak için üç öğeden oluşur: güvenlik sorumlusu, rol tanımı ve kapsam.

1. Adım: Kimlerin erişmesi gerektiğini belirleme

Kullanıcıya, gruba, hizmet sorumlusuna veya yönetilen kimliğe rol atayabilirsiniz. Rol atamak için nesnenin benzersiz kimliğini belirtmeniz gerekebilir. Kimlik şu biçimdedir: 11111111-1111-1111-1111-111111111111. Kimliği Azure portalını veya Azure CLI'yi kullanarak alabilirsiniz.

kullanıcı

Microsoft Entra kullanıcısı için, patlong@contoso.com gibi kullanıcı asıl adını veya kullanıcı nesne kimliğini edinin. Nesne kimliğini almak için az ad user show komutunu kullanabilirsiniz.

az ad user show --id "{principalName}" --query "id" --output tsv

Grup

Microsoft Entra grubu için grup nesnesi kimliğine ihtiyacınız vardır. Nesne kimliğini almak için az ad group show veya az ad group list kullanabilirsiniz.

az ad group show --group "{groupName}" --query "id" --output tsv

Hizmet Prensibi

Bir Microsoft Entra hizmet sorumlusu (uygulama tarafından kullanılan kimlik) için hizmet sorumlusu nesne kimliğine ihtiyacınız vardır. Nesne kimliğini almak için az ad sp list komutunu kullanabilirsiniz. Hizmet sorumlusu için nesne kimliğini kullanın ve uygulama kimliğini değil.

az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"

Yönetilen kimlik

Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimlik için nesne kimliğine ihtiyacınız vardır. Nesne kimliğini almak için az ad sp list komutunu kullanabilirsiniz.

az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"

Yalnızca kullanıcı tarafından atanan yönetilen kimlikleri listelemek için az identity list komutunu kullanabilirsiniz.

az identity list

2. Adım: Uygun rolü seçin

İzinler roller halinde birlikte gruplandırılır. Birkaç Azure yerleşik rolü listesinden seçim yapabilir veya kendi özel rollerinizi kullanabilirsiniz. Gerekli olan en az ayrıcalıkla erişim vermek en iyi yöntemdir, bu nedenle daha geniş bir rol atamaktan kaçının.

Rolleri listelemek ve benzersiz rol kimliğini almak için az role definition list komutunu kullanabilirsiniz.

az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv

Belirli bir rolün ayrıntılarını şöyle listeleyin.

az role definition list --name "{roleName}"

Daha fazla bilgi için bkz . Azure rol tanımlarını listeleme.

3. Adım: Gerekli kapsamı belirleme

Azure dört kapsam düzeyi sağlar: kaynak, kaynak grubu, abonelik ve yönetim grubu. Gereken en düşük ayrıcalıkla erişim vermek en iyi yöntemdir, bu nedenle daha geniş bir kapsamda rol atamaktan kaçının. Kapsam hakkında daha fazla bilgi için Kapsamı anlama bölümüne bakın.

Kaynak kapsamı

Kaynak kapsamı için kaynağın kaynak kimliğine ihtiyacınız vardır. Azure portalında kaynağın özelliklerine bakarak kaynak kimliğini bulabilirsiniz. Kaynak kimliği aşağıdaki biçime sahiptir.

/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}

Kaynak grubu kapsamı

Kaynak grubu kapsamı için kaynak grubunun adına ihtiyacınız vardır. Adı Azure portalındaki Kaynak grupları sayfasında bulabilir veya az group list komutunu kullanabilirsiniz.

az group list --query "[].{name:name}" --output tsv

Abonelik kapsamı

Abonelik kapsamı için abonelik kimliğine ihtiyacınız vardır. Kimliği Azure portalındaki Abonelikler sayfasında bulabilir veya az account list komutunu kullanabilirsiniz.

az account list --query "[].{name:name, id:id}" --output tsv

Yönetim grubu kapsamı

Yönetim grubu kapsamı için yönetim grubu adına ihtiyacınız vardır. Adı Azure portalındaki Yönetim grupları sayfasında bulabilir veya az account management-group list komutunu kullanabilirsiniz.

az account management-group list --query "[].{name:name, id:id}" --output tsv

4. Adım: Rol atama

Rol atamak için az role assignment create komutunu kullanın. Kapsama bağlı olarak, komut genellikle aşağıdaki biçimlerden birine sahiptir.

Kaynak kapsamı

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"

Kaynak grubu kapsamı

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"

Abonelik kapsamı

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"

Yönetim grubu kapsamı

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"

Aşağıda, bir kaynak grubu kapsamındaki bir kullanıcıya Sanal Makine Katkıda Bulunanı rolünü atadığınızda çıktının bir örneği gösterilmektedir.

{
  "canDelegate": null,
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
  "name": "{roleAssignmentId}",
  "principalId": "{principalId}",
  "principalType": "User",
  "resourceGroup": "{resourceGroupName}",
  "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
  "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "type": "Microsoft.Authorization/roleAssignments"
}

Rol örnekleri atama

Depolama hesabı kaynak kapsamındaki tüm blob kapsayıcılarına bir rol atayın

Storage12345 adlı depolama hesabının kaynak kapsamında 55555555-5555-5555-5555-5555-55555555 nesne kimliğine sahip bir hizmet sorumlusuna Depolama Blobu Veri Katkıda Bulunanı rolünü atar.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"

Belirli bir blob kapsayıcısı kaynağı kapsamı için rol atayın

Depolama Blobu Veri Katkıda Bulunanı rolünü, blob-container-01 adlı blob kapsayıcısının kaynak kapsamında 55555555-5555-5555-5555-555555555555 nesne kimliğine sahip bir hizmet sorumlusuna atar.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"

Belirli bir sanal ağ kaynak kapsamındaki bir grup için rol atama

Sanal Makine Katkıda Bulunanı rolünü, kimliği 22222222-2222-2222-2222-222222222222 olan Ann Mack Team grubuna, pharma-sales-project-network adlı sanal ağın bir kaynak kapsamı dahilinde atar.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"

Kaynak grubu kapsamında kullanıcıya rol atama

Pharma-sales kaynak grubu kapsamında patlong@contoso.com kullanıcıya Sanal Makine Katılımcısı rolünü atar.

az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Kaynak grubu kapsamında benzersiz rol kimliğini kullanarak kullanıcıya rol atamak

Rol adının değişebileceği birkaç durum vardır, örneğin:

  • Kendi özel rolünüzü kullanıyorsunuz ve adı değiştirmeye karar verirsiniz.
  • Adında (Önizleme) olan bir önizleme rolü kullanıyorsunuz. Rol serbest bırakıldığında, rol yeniden adlandırılır.

Bir rol yeniden adlandırılsa bile rol kimliği değişmez. Rol atamalarınızı oluşturmak için betikler veya otomasyon kullanıyorsanız, rol adı yerine benzersiz rol kimliğini kullanmak en iyi yöntemdir. Bu nedenle, bir rol yeniden adlandırılırsa betiklerinizin çalışma olasılığı daha yüksektir.

Aşağıdaki örnek, pharma-sales kaynak grubu kapsamında patlong@contoso.com kullanıcıya Sanal Makine Katkıda Bulunanı rolünü atar.

az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Tüm blob kapsayıcıları için kaynak grubu kapsamında bir rol ata.

Example-Storage-rg kaynak grubu kapsamında 555555555-5555-5555-5555-55555555 nesne kimliğine sahip bir hizmet sorumlusuna Depolama Blobu Veri Katkıda Bulunanı rolünü atar.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"

Kaynak grubu kapsamındaki bir uygulama için rol atama

Sanal Makine Katkıda Bulunanı rolünü, pharma-sales kaynak grubu kapsamında, hizmet sorumlusu nesne kimliği 44444444-4444-4444-4444-444444444444 olan bir uygulamaya atar.

az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Kaynak grubu kapsamında yeni hizmet sorumlusu için rol atama

Yeni bir hizmet sorumlusu oluşturur ve bu hizmet sorumlusuna hemen bir rol atamayı denerseniz, bu rol ataması bazı durumlarda başarısız olabilir. Örneğin, yeni bir yönetilen kimlik oluşturmak için bir betik kullanır ve ardından bu hizmet sorumlusuna rol atamayı denerseniz rol ataması başarısız olabilir. Bu hatanın nedeni büyük olasılıkla bir çoğaltma gecikmesidir. Hizmet sorumlusu tek bir bölgede oluşturulur; ancak rol ataması, hizmet sorumlusunu henüz çoğaltmamış farklı bir bölgede gerçekleşebilir. Bu senaryoyu ele almak için rol atamasını oluştururken asıl türü belirtmeniz gerekir.

Rol atamak için az role assignment create komutunu kullanın, --assignee-object-id için bir değer belirtin ve --assignee-principal-type öğesini ServicePrincipal olarak ayarlayın.

az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"

Aşağıdaki örnek, Sanal Makine Katkıda Bulunanı rolünü pharma-sales kaynak grubu kapsamındaki msi-test yönetilen kimliğine atar:

az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Abonelik kapsamında bir kullanıcı için rol atama

Okuyucu rolünü annm@example.com kullanıcıya abonelik kapsamında atar.

az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Abonelik kapsamında bir grup için rol atayın

Okuyucu rolünü, bir abonelik kapsamı dahilinde kimliği 22222222-2222-2222-2222-222222222222 olan Ann Mack Team grubuna atar.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Abonelik düzeyinde tüm blob kapsayıcılarına rol ata

Depolama Veri Okuyucusu Blobu rolünü alain@example.com kullanıcıya abonelik kapsamında atar.

az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Yönetim grubu kapsamında kullanıcıya rol atama

Faturalama Okuyucusu rolünü alain@example.com kullanıcıya bir yönetim grubu kapsamında atar.

az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"

Sonraki adımlar