ARM şablonu kullanarak Azure özel rolleri oluşturma veya güncelleştirme
Azure yerleşik rolleri kuruluşunuzun belirli gereksinimlerini karşılamıyorsa kendi özel rollerinizi oluşturabilirsiniz. Bu makalede, Azure Resource Manager şablonu (ARM şablonu) kullanarak özel bir rolün nasıl oluşturulacağı veya güncelleştirildiği açıklanır.
Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.
Özel rol oluşturmak için bir rol adı, izinler ve rolün kullanılabileceğini belirtirsiniz. Bu makalede, abonelik kapsamında veya daha düşük bir kapsamda atanabilecek kaynak izinlerine sahip Özel Rol - RG Okuyucusu adlı bir rol oluşturacaksınız.
Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalda açılır.
Önkoşullar
Özel rol oluşturmak için sahip olmanız gerekir:
- Kullanıcı Erişim Yöneticisi gibi özel roller oluşturma izinleri.
Aşağıdaki sürümü kullanmanız gerekir:
2018-07-01
veya üzeri
Daha fazla bilgi için bkz . Azure RBAC REST API'lerinin API sürümleri.
Şablonu gözden geçirme
Bu makalede kullanılan şablon Azure Hızlı Başlangıç Şablonları'ndan alınmıştı. Şablonun dört parametresi ve kaynaklar bölümü vardır. Dört parametre şunlardır:
- Varsayılan değeri
["Microsoft.Resources/subscriptions/resourceGroups/read"]
olan eylem dizisi. - Boş varsayılan değer içeren dizisi
notActions
. - Varsayılan değeri
Custom Role - RG Reader
olan rol adı. - Varsayılan değeri
Subscription Level Deployment of a Role Definition
olan rol açıklaması.
Bu özel rolün atanabileceği kapsam geçerli aboneliğe ayarlanır.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "16704138909949665309"
}
},
"parameters": {
"actions": {
"type": "array",
"defaultValue": [
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"metadata": {
"description": "Array of actions for the roleDefinition"
}
},
"notActions": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "Array of notActions for the roleDefinition"
}
},
"roleName": {
"type": "string",
"defaultValue": "Custom Role - RG Reader",
"metadata": {
"description": "Friendly name of the role definition"
}
},
"roleDescription": {
"type": "string",
"defaultValue": "Subscription Level Deployment of a Role Definition",
"metadata": {
"description": "Detailed description of the role definition"
}
}
},
"variables": {
"roleDefName": "[guid(parameters('roleName'))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"name": "[variables('roleDefName')]",
"properties": {
"roleName": "[parameters('roleName')]",
"description": "[parameters('roleDescription')]",
"type": "customRole",
"permissions": [
{
"actions": "[parameters('actions')]",
"notActions": "[parameters('notActions')]"
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}
Şablonda tanımlanan kaynak:
Şablonu dağıtma
Önceki şablonu dağıtmak için bu adımları izleyin.
Azure Portal’ında oturum açın.
PowerShell için Azure Cloud Shell'i açın.
Aşağıdaki betiği kopyalayıp Cloud Shell'e yapıştırın.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)" [string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)" $actions = $actions.Split(',') $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json" New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
Dağıtım için gibi
centralus
bir konum girin.Özel rol için, gibi
Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read
virgülle ayrılmış bir liste olarak eylemlerin listesini girin.Gerekirse, komutu çalıştırmak için Enter tuşuna
New-AzDeployment
basın.New-AzDeployment komutu, özel rolü oluşturmak için şablonu dağıtır.
Aşağıdakine benzer bir çıktı görmeniz gerekir:
PS> New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions Id : /subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/azuredeploy DeploymentName : azuredeploy Location : centralus ProvisioningState : Succeeded Timestamp : 6/25/2020 8:08:32 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ================= ========================= ========== actions Array [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ] notActions Array [] roleName String Custom Role - RG Reader roleDescription String Subscription Level Deployment of a Role Definition Outputs : DeploymentDebugLogLevel :
Dağıtılan kaynakları gözden geçirme
Özel rolün oluşturulduğunu doğrulamak için bu adımları izleyin.
Özel rolü listelemek için Get-AzRoleDefinition komutunu çalıştırın.
Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
Aşağıdakine benzer bir çıktı görmeniz gerekir:
{ "Name": "Custom Role - RG Reader", "Id": "11111111-1111-1111-1111-111111111111", "IsCustom": true, "Description": "Subscription Level Deployment of a Role Definition", "Actions": [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/{subscriptionId}" ] }
Azure portalında aboneliğinizi açın.
Sol menüde Erişim denetimi (IAM) öğesini seçin.
Roller sekmesini seçin.
Tür listesini CustomRole olarak ayarlayın.
Özel Rol - RG Okuyucusu rolünün listelendiğini doğrulayın.
Özel rolü güncelleştirme
Özel rol oluşturmaya benzer şekilde, şablon kullanarak mevcut bir özel rolü güncelleştirebilirsiniz. Özel bir rolü güncelleştirmek için, güncelleştirmek istediğiniz rolü belirtmeniz gerekir.
Özel rolü güncelleştirmek için önceki Hızlı Başlangıç şablonunda yapmanız gereken değişiklikler şunlardır.
Rol kimliğini parametre olarak ekleyin.
... "roleDefName": { "type": "string", "metadata": { "description": "ID of the role definition" } ...
Rol kimliği parametresini rol tanımına ekleyin.
... "resources": [ { "type": "Microsoft.Authorization/roleDefinitions", "apiVersion": "2022-04-01", "name": "[parameters('roleDefName')]", "properties": { ...
Burada, şablonun nasıl dağıtılacağına ilişkin bir örnek verilmiştır.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)"
[string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
$actions = $actions.Split(',')
$roleDefName = Read-Host -Prompt "Enter the role ID to update"
$templateFile = "rg-reader-update.json"
New-AzDeployment -Location $location -TemplateFile $templateFile -actions $actions -roleDefName $roleDefName
Kaynakları temizleme
Özel rolü kaldırmak için şu adımları izleyin.
Özel rolü kaldırmak için aşağıdaki komutu çalıştırın.
Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
Özel rolü kaldırmak istediğinizi onaylamak için Y girin.