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」を入力して、リソース グループを削除することを確認します。