クイックスタート: ARM テンプレートを使用して Azure でのロールを割り当てる
Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースに対するアクセスを管理するための手法です。 このクイックスタートでは、リソース グループを作成し、リソース グループ内で仮想マシンを作成および管理するアクセス権をユーザーに付与します。 このクイックスタートでは、Azure Resource Manager テンプレート (ARM テンプレート) を使用してアクセス権を付与します。
Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。
環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 Azure portal でテンプレートが開きます。
前提条件
Azure ロールを割り当てたりロール割り当てを削除したりするには、以下が必要です。
- Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
Microsoft.Authorization/roleAssignments/write
およびMicrosoft.Authorization/roleAssignments/delete
アクセス許可 (ロール ベースのアクセス制御管理者など)- ロールを割り当てるには、セキュリティ プリンシパル、ロールの定義、スコープの 3 つの要素を指定する必要があります。 このクイックスタートでは、セキュリティ プリンシパルは自分またはディレクトリ内の別のユーザーであり、ロールの定義は仮想マシン共同作成者、スコープは指定したリソース グループです。
テンプレートを確認する
このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。 テンプレートには、2 つの parameters と 1 つの resources セクションがあります。 リソース セクションには、ロールの割り当ての 3 つの要素 (セキュリティ プリンシパル、ロールの定義、スコープ) が含まれることに注意してください。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "15160858749942476090"
}
},
"parameters": {
"roleDefinitionID": {
"type": "string",
"metadata": {
"description": "Specifies the role definition ID used in the role assignment."
}
},
"principalId": {
"type": "string",
"metadata": {
"description": "Specifies the principal ID assigned to the role."
}
}
},
"variables": {
"roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[variables('roleAssignmentName')]",
"properties": {
"roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionID'))]",
"principalId": "[parameters('principalId')]"
}
}
],
"outputs": {
"name": {
"type": "string",
"value": "[variables('roleAssignmentName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]"
}
}
}
テンプレート内に定義されているリソース:
テンプレートのデプロイ
Azure portal にサインインします。
Azure サブスクリプションに関連付けられた電子メール アドレスを指定します。 または、ディレクトリ内の別のユーザーの電子メール アドレスを指定します。
PowerShell 用の Azure Cloud Shell を開きます。
次のスクリプトをコピーして Cloud Shell に貼り付けます。
$resourceGroupName = Read-Host -Prompt "Enter a resource group name (i.e. ExampleGrouprg)" $emailAddress = Read-Host -Prompt "Enter an email address for a user in your directory" $location = Read-Host -Prompt "Enter a location (i.e. centralus)" $roleAssignmentName = New-Guid $principalId = (Get-AzAdUser -Mail $emailAddress).id $roleDefinitionId = (Get-AzRoleDefinition -name "Virtual Machine Contributor").id $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleDefinitionID $roleDefinitionId -principalId $principalId
リソース グループ名 (ExampleGrouprg など) を入力します。
自分またはディレクトリ内の別のユーザーの電子メール アドレスを入力します。
リソース グループの場所 (米国中部など) を入力します。
必要に応じて、Enter キーを押し、New-AzResourceGroupDeployment コマンドを実行します。
New-AzResourceGroup コマンドにより、新しいリソース グループが作成され、New-AzResourceGroupDeployment コマンドによって、ロールの割り当てを追加するテンプレートがデプロイされます。
次のような出力が表示されます。
PS> New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleAssignmentName $roleAssignmentName -roleDefinitionID $roleDefinitionId -principalId $principalId DeploymentName : azuredeploy ResourceGroupName : ExampleGrouprg ProvisioningState : Succeeded Timestamp : 5/22/2020 9:01:30 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== roleDefinitionID String 9980e02c-c2be-4d73-94e8-173b1dc7cf3c principalId String {principalId} Outputs : DeploymentDebugLogLevel :
デプロイされているリソースを確認する
Azure portal で、作成したリソース グループを開きます。
左側のメニューで [アクセス制御 (IAM)] をクリックします。
[ロールの割り当て] タブをクリックします。
指定したユーザーに仮想マシン共同作成者ロールが割り当てられていることを確認します。
リソースをクリーンアップする
作成したロールの割り当てとリソース グループを削除するには、次の手順に従います。
次のスクリプトをコピーして Cloud Shell に貼り付けます。
$emailAddress = Read-Host -Prompt "Enter the email address of the user with the role assignment to remove" $resourceGroupName = Read-Host -Prompt "Enter the resource group name to remove (i.e. ExampleGrouprg)" $principalId = (Get-AzAdUser -Mail $emailAddress).id Remove-AzRoleAssignment -ObjectId $principalId -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName $resourceGroupName Remove-AzResourceGroup -Name $resourceGroupName
削除するロールの割り当てを持つユーザーの電子メール アドレスを入力します。
削除するリソース グループ名 (ExampleGrouprg など) を入力します。
必要に応じて、Enter キーを押し、Remove-AzResourceGroup コマンドを実行します。
「Y」を入力して、リソース グループを削除することを確認します。