スコープ は、アクセスが適用されるリソースのセットです。 ロールを割り当てるときは、実際に必要なアクセスのみをセキュリティ プリンシパルに付与できるように、スコープを理解することが重要です。 スコープを制限することで、セキュリティ プリンシパルが侵害された場合に危険にさらされるリソースを制限します。
スコープ レベル
Azure では、 管理グループ、サブスクリプション、 リソース グループ、リソースの 4 つのレベルでスコープを指定できます。 スコープは親子関係で構造化されています。 階層の各レベルにより、スコープがより具体的になります。 ロールは、次のいずれかのスコープ レベルで割り当てることができます。 選択したレベルによって、ロールの適用対象の広さが決まります。 レベルが低いほど、高いレベルからロールのアクセス許可が継承されます。
管理グループはサブスクリプションより上の範囲のレベルですが、管理グループはより複雑な階層をサポートします。 次の図は、定義できる管理グループとサブスクリプションの階層の例を示しています。 管理グループの詳細については、「 Azure 管理グループとは」を参照してください。
スコープの形式
コマンド ラインを使用してロールを割り当てる場合は、スコープを指定する必要があります。 コマンド ライン ツールの場合、スコープはロールの割り当ての正確なスコープを識別する長い文字列である可能性があります。 Azure portal では、通常、このスコープは リソース ID として一覧表示されます。
スコープは、スラッシュ (/) 文字で区切られた一連の識別子で構成されます。 この文字列は、プレースホルダー ({}) のないテキストが固定識別子である次の階層を表していると考えることができます。
/subscriptions
/{subscriptionId}
/resourcegroups
/{resourceGroupName}
/providers
/{providerName}
/{resourceType}
/{resourceSubType1}
/{resourceSubType2}
/{resourceName}
-
{subscriptionId}は、使用するサブスクリプションの ID (GUID) です。 -
{resourceGroupName}は、含まれているリソース グループの名前です。 -
{providerName}は、リソースを処理するリソース プロバイダーの名前を指定し、そのリソース プロバイダー内のレベルを{resourceType}{resourceSubType*}識別します。 -
{resourceName}は、特定のリソースを識別する文字列の最後の部分です。
管理グループはサブスクリプションより上位のレベルであり、最も広い (最も具体的でない) スコープを持ちます。 このレベルのロールの割り当ては、管理グループ内のサブスクリプションに適用されます。 管理グループのスコープの形式は次のとおりです。
/providers
/Microsoft.Management
/managementGroups
/{managementGroupName}
スコープの例
| Scope | Example |
|---|---|
| 管理グループ | /providers/Microsoft.Management/managementGroups/marketing-group |
| Subscription | /subscriptions/00000000-0000-0000-0000-000000000000 |
| リソースグループ | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg |
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales |
|
| Resource | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01 |
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVirtualNetwork12345 |
リソースのスコープを決定する方法
管理グループ、サブスクリプション、またはリソース グループのスコープを決定するのはかなり簡単です。 必要なのは、名前とサブスクリプション ID だけです。 ただし、リソースのスコープを決定するには、もう少し時間がかかります。 リソースのスコープを決定する方法を次に示します。
Azure portal でリソースを開き、プロパティを確認します。 リソースには、スコープを決定できる リソース ID が 一覧表示されます。 たとえば、ストレージ アカウントのリソース ID を次に示します。
もう 1 つの方法は、Azure portal を使用してリソース スコープでロールを一時的に割り当て、 Azure PowerShell または Azure CLI を使用してロールの割り当てを一覧表示することです。 出力では、スコープがプロパティとして一覧表示されます。
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/pro viders/Microsoft.Authorization/roleAssignments/<roleAssignmentId> Scope : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01 DisplayName : User SignInName : user@contoso.com RoleDefinitionName : Storage Blob Data Reader RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1 ObjectId : <principalId> ObjectType : User CanDelegate : False Description : ConditionVersion : Condition :{ "canDelegate": null, "condition": null, "conditionVersion": null, "description": null, "id": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}", "name": "{roleAssignmentId}", "principalId": "{principalId}", "principalName": "user@contoso.com", "principalType": "User", "resourceGroup": "test-rg", "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1", "roleDefinitionName": "Storage Blob Data Reader", "scope": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01", "type": "Microsoft.Authorization/roleAssignments" }
スコープと ARM テンプレート
ロールの割り当ては、 拡張機能リソースと呼ばれる Azure Resource Manager の特殊な種類です。 拡張機能リソースは、別のリソースの機能に追加されるリソースです。 これらは常に、別のリソースの拡張機能 (子など) として存在します。 たとえば、サブスクリプション スコープでのロールの割り当ては、サブスクリプションの拡張機能リソースです。 ロールの割り当ての名前は、常に拡張するリソースの名前に/Microsoft.Authorization/roleAssignments/{roleAssignmentId}を加えたものです。 Azure Resource Manager テンプレート (ARM テンプレート) を使用してロールを割り当てる場合、通常はスコープを指定する必要はありません。 その理由は、スコープ フィールドが、拡張するリソースの ID になるのが常にであるためです。 スコープは、ロールの割り当て自体の ID から決定できます。 次の表に、ロールの割り当て ID と対応するスコープの例を示します。
| ロールの割り当て ID | Scope |
|---|---|
/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} |
/subscriptions/{subscriptionId} |
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} |
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg |
スコープと ARM テンプレートの詳細については、「 Azure Resource Manager テンプレートを使用して Azure ロールを割り当てる」を参照してください。 拡張リソースの種類の完全な一覧については、「他のリソースの 機能を拡張するリソースの種類」を参照してください。