次の方法で共有


クイックスタート: ARM テンプレートを使用して Azure でのロールを割り当てる

Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースに対するアクセスを管理するための手法です。 このクイックスタートでは、リソース グループを作成し、リソース グループ内で仮想マシンを作成および管理するアクセス権をユーザーに付与します。 このクイックスタートでは、Azure Resource Manager テンプレート (ARM テンプレート) を使用してアクセス権を付与します。

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。

環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 Azure portal でテンプレートが開きます。

Resource Manager テンプレートを Azure に配置するボタン。

前提条件

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'))]"
    }
  }
}

テンプレート内に定義されているリソース:

テンプレートのデプロイ

  1. Azure portal にサインインします。

  2. Azure サブスクリプションに関連付けられた電子メール アドレスを指定します。 または、ディレクトリ内の別のユーザーの電子メール アドレスを指定します。

  3. PowerShell 用の Azure Cloud Shell を開きます。

  4. 次のスクリプトをコピーして 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
    
  5. リソース グループ名 (ExampleGrouprg など) を入力します。

  6. 自分またはディレクトリ内の別のユーザーの電子メール アドレスを入力します。

  7. リソース グループの場所 (米国中部など) を入力します。

  8. 必要に応じて、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 :
    

デプロイされているリソースを確認する

  1. Azure portal で、作成したリソース グループを開きます。

  2. 左側のメニューで [アクセス制御 (IAM)] をクリックします。

  3. [ロールの割り当て] タブをクリックします。

  4. 指定したユーザーに仮想マシン共同作成者ロールが割り当てられていることを確認します。

    New role assignment

リソースをクリーンアップする

作成したロールの割り当てとリソース グループを削除するには、次の手順に従います。

  1. 次のスクリプトをコピーして 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
    
  2. 削除するロールの割り当てを持つユーザーの電子メール アドレスを入力します。

  3. 削除するリソース グループ名 (ExampleGrouprg など) を入力します。

  4. 必要に応じて、Enter キーを押し、Remove-AzResourceGroup コマンドを実行します。

  5. Y」を入力して、リソース グループを削除することを確認します。

次のステップ