Azure CLI を使用して Azure ロールの割り当て条件を追加または編集する

Azure ロール割り当ての条件は、必要に応じてロール割り当てに追加し、細かなアクセス制御を行うことで、安全確認を強化するための仕組みです。 たとえば、特定のタグが設定されたオブジェクトしか読み取れない、という条件を設定できます。 この記事では、Azure CLI を使用して、ロールの割り当ての条件を追加、編集、一覧表示、または削除する方法について説明します。

前提条件

ロールの割り当て条件を追加または編集するための前提条件の詳細については、条件の前提条件に関するページを参照してください。

条件の追加

ロールの割り当て条件を追加するには、az role assignment create を使用します。 az role assignment create コマンドには、条件に関連する次のパラメーターが含まれています。

パラメーター Type Description
condition String ユーザーにアクセス許可を付与できる条件。
condition-version String 条件構文のバージョン。 --condition-version なしで --condition を指定した場合、バージョンは既定値の 2.0 に設定されます。

次の例は、条件を使用してストレージ BLOB データ 閲覧者ロールを割り当てる方法を示しています。 この条件は、コンテナー名が 'blob-example-container' と等しいかどうかを確認します。

az role assignment create --role "Storage Blob Data Reader" --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName --assignee "user1@contoso.com" \
--description "Read access if container name equals blobs-example-container" \
--condition "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))" \
--condition-version "2.0"

出力例を次に示します。

{
    "canDelegate": null,
    "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
    "conditionVersion": "2.0",
    "description": "Read access if container name equals blobs-example-container",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

条件を編集する

既存のロールの割り当て条件を編集するには、az role assignment update と、入力として JSON ファイルを使用します。 条件と説明が更新される JSON ファイルの例を次に示します。 編集できるのは、conditionconditionVersiondescription のプロパティのみです。 ロールの割り当て条件を更新するには、すべてのプロパティを指定する必要があります。

{
    "canDelegate": null,
    "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
    "conditionVersion": "2.0",
    "description": "Read access if container name equals blobs-example-container or blobs-example-container2",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

az role assignment update を使用して、ロールの割り当ての条件を更新します。

az role assignment update --role-assignment "./path/roleassignment.json"

出力例を次に示します。

{
    "canDelegate": null,
    "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
    "conditionVersion": "2.0",
    "description": "Read access if container name equals blobs-example-container or blobs-example-container2",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

条件を一覧表示する

ロールの割り当て条件を一覧表示するには、az role assignment list を使用します。 詳細については、「Azure CLI を使用して Azure ロールの割り当てを一覧表示する」を参照してください。

条件の削除

ロールの割り当て条件を削除するには、ロールの割り当て条件を編集し、conditioncondition-version の両方のプロパティを空の文字列 ("") または null に設定します。

また、ロールの割り当てとその条件の両方を削除する場合は、az role assignment delete コマンドを使用できます。 詳細については、「Azure ロールの割り当ての削除」を参照してください。

次のステップ