RBAC と Azure Resource Manager テンプレートを使用して Azure リソースへのアクセスを管理するManage access to Azure resources using RBAC and Azure Resource Manager templates

ロールベースのアクセス制御 (RBAC) は、Azure のリソースに対するアクセスを管理するための手法です。Role-based access control (RBAC) is the way that you manage access to Azure resources. Azure PowerShell または Azure CLI を使う以外に、RBAC と Azure Resource Manager テンプレートを使って Azure リソースへのアクセスを管理することもできます。In addition to using Azure PowerShell or the Azure CLI, you can manage access to Azure resources using RBAC and Azure Resource Manager templates. リソースを一貫して繰り返しデプロイする場合は、テンプレートが便利です。Templates can be helpful if you need to deploy resources consistently and repeatedly. この記事では、RBAC とテンプレートを使ってアクセスを管理する方法について説明します。This article describes how you can manage access using RBAC and templates.

ロールの割り当てを作成するためのテンプレートの例Example template to create a role assignment

RBAC でアクセス権を付与するには、ロールの割り当てを作成します。In RBAC, to grant access, you create a role assignment. 以下のテンプレートでは次のことを示します。The following template demonstrates:

  • リソース グループのスコープでユーザー、グループ、またはアプリケーションにロールを割り当てる方法How to assign a role to a user, group, or application at the resource group scope
  • 所有者、共同作成者、閲覧者のロールをパラメーターとして指定する方法How to specify the Owner, Contributor, and Reader roles as a parameter

テンプレートを使うには、次の入力を指定する必要があります。To use the template, you must specify the following inputs:

  • リソース グループの名前The name of a resource group
  • ロールを割り当てるユーザー、グループ、またはアプリケーションの一意識別子The unique identifier of a user, group, or application to assign the role to
  • 割り当てるロールThe role to assign
  • ロールの割り当てに使われる一意識別子A unique identifier that will be used for the role assignment
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "principalId": {
      "type": "string",
      "metadata": {
        "description": "The principal to assign the role to"
      }
    },
    "builtInRoleType": {
      "type": "string",
      "allowedValues": [
        "Owner",
        "Contributor",
        "Reader"
      ],
      "metadata": {
        "description": "Built-in role to assign"
      }
    },
    "roleNameGuid": {
      "type": "string",
      "metadata": {
        "description": "A new GUID used to identify the role assignment"
      }
    }
  },
  "variables": {
    "Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
    "Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
    "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]",
    "scope": "[resourceGroup().id]"
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2017-05-01",
      "name": "[parameters('roleNameGuid')]",
      "properties": {
        "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
        "principalId": "[parameters('principalId')]",
        "scope": "[variables('scope')]"
      }
    }
  ]
}

以下では、テンプレートをデプロイした後でユーザーに閲覧者ロールを割り当てる例を示します。The following shows an example of a Reader role assignment to a user after deploying the template.

テンプレートを使用したロールの割り当て

Azure PowerShell を使用してテンプレートを展開するDeploy template using Azure PowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

Azure PowerShell を使用して前のテンプレートをデプロイするには、以下の手順のようにします。To deploy the previous template using Azure PowerShell, follow these steps.

  1. rbac-rg.json という名前の新しいファイルを作成し、前に示したテンプレートをコピーします。Create a new file named rbac-rg.json and copy the previous template.

  2. Azure PowerShell にサインインします。Sign in to Azure PowerShell.

  3. ユーザー、グループ、またはアプリケーションの一意識別子を取得します。Get the unique identifier of a user, group, or application. たとえば、Get-AzADUser コマンドを使って Azure AD ユーザーの一覧を表示できます。For example, you can use the Get-AzADUser command to list Azure AD users.

    Get-AzADUser
    
  4. GUID ツールを使って、ロールの割り当てに使う一意識別子を生成します。Use a GUID tool to generate a unique identifier that will be used for the role assignment. この識別子の形式は 11111111-1111-1111-1111-111111111111 になります。The identifier has the format: 11111111-1111-1111-1111-111111111111

  5. リソース グループの例を作成します。Create an example resource group.

    New-AzResourceGroup -Name ExampleGroup -Location "Central US"
    
  6. New-AzResourceGroupDeployment コマンドを使って、デプロイを開始します。Use the New-AzResourceGroupDeployment command to start the deployment.

    New-AzResourceGroupDeployment -ResourceGroupName ExampleGroup -TemplateFile rbac-rg.json
    

    必要なパラメーターの指定を求められます。You are asked to specify the required parameters. 出力の例を次に示します。The following shows an example of the output.

    PS /home/user> New-AzResourceGroupDeployment -ResourceGroupName ExampleGroup -TemplateFile rbac-rg.json
    
    cmdlet New-AzResourceGroupDeployment at command pipeline position 1
    Supply values for the following parameters:
    (Type !? for Help.)
    principalId: 22222222-2222-2222-2222-222222222222
    builtInRoleType: Reader
    roleNameGuid: 11111111-1111-1111-1111-111111111111
    
    DeploymentName          : rbac-rg
    ResourceGroupName       : ExampleGroup
    ProvisioningState       : Succeeded
    Timestamp               : 7/17/2018 7:46:32 PM
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              principalId      String                     22222222-2222-2222-2222-222222222222
                              builtInRoleType  String                     Reader
                              roleNameGuid     String                     11111111-1111-1111-1111-111111111111
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

Azure CLI を使用してテンプレートを展開するDeploy template using the Azure CLI

Azure CLI を使って前記のテンプレートをデプロイするには、以下の手順のようにします。To deploy the previous template using the Azure CLI, follow these steps.

  1. rbac-rg.json という名前の新しいファイルを作成し、前に示したテンプレートをコピーします。Create a new file named rbac-rg.json and copy the previous template.

  2. Azure CLI にサインインします。Sign in to the Azure CLI.

  3. ユーザー、グループ、またはアプリケーションの一意識別子を取得します。Get the unique identifier of a user, group, or application. たとえば、az ad user list コマンドを使って Azure AD ユーザーの一覧を表示できます。For example, you can use the az ad user list command to list Azure AD users.

    az ad user list
    
  4. GUID ツールを使って、ロールの割り当てに使う一意識別子を生成します。Use a GUID tool to generate a unique identifier that will be used for the role assignment. この識別子の形式は 11111111-1111-1111-1111-111111111111 になります。The identifier has the format: 11111111-1111-1111-1111-111111111111

  5. リソース グループの例を作成します。Create an example resource group.

    az group create --name ExampleGroup --location "Central US"
    
  6. az group deployment create コマンドを使って、デプロイを開始します。Use the az group deployment create command to start the deployment.

    az group deployment create --resource-group ExampleGroup --template-file rbac-rg.json
    

    必要なパラメーターの指定を求められます。You are asked to specify the required parameters. 出力の例を次に示します。The following shows an example of the output.

    C:\Azure\Templates>az group deployment create --resource-group ExampleGroup --template-file rbac-rg.json
    Please provide string value for 'principalId' (? for help): 22222222-2222-2222-2222-222222222222
    Please provide string value for 'builtInRoleType' (? for help):
     [1] Owner
     [2] Contributor
     [3] Reader
    Please enter a choice [1]: 3
    Please provide string value for 'roleNameGuid' (? for help): 11111111-1111-1111-1111-111111111111
    {
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ExampleGroup/providers/Microsoft.Resources/deployments/rbac-rg",
      "name": "rbac-rg",
      "properties": {
        "additionalProperties": {
          "duration": "PT9.5323924S",
          "outputResources": [
            {
              "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ExampleGroup/providers/Microsoft.Authorization/roleAssignments/11111111-1111-1111-1111-111111111111",
              "resourceGroup": "ExampleGroup"
            }
          ],
          "templateHash": "0000000000000000000"
        },
        "correlationId": "33333333-3333-3333-3333-333333333333",
        "debugSetting": null,
        "dependencies": [],
        "mode": "Incremental",
        "outputs": null,
        "parameters": {
          "builtInRoleType": {
            "type": "String",
            "value": "Reader"
          },
          "principalId": {
            "type": "String",
            "value": "22222222-2222-2222-2222-222222222222"
          },
          "roleNameGuid": {
            "type": "String",
            "value": "11111111-1111-1111-1111-111111111111"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Authorization",
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "locations": [
                  null
                ],
                "properties": null,
                "resourceType": "roleAssignments"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "template": null,
        "templateLink": null,
        "timestamp": "2018-07-17T19:00:31.830904+00:00"
      },
      "resourceGroup": "ExampleGroup"
    }
    

次の手順Next steps