この記事では、Azure Blob Storage へのアクセスを制御するためのロールの割り当て条件の例をいくつか示します。
重要
Azure 属性ベースのアクセス制御 (Azure ABAC) は、ストレージ アカウントの Standard と Premium 両方のパフォーマンス レベルで、request
、resource
、environment
、principal
を使用して Azure Blob Storage、Azure Data Lake Storage Gen2、Azure キューへのアクセスを制御するために一般提供 (GA) されています。 現在、コンテナー メタデータ リソース属性とリスト BLOB インクルード要求属性はプレビュー段階です。 Azure Storage の ABAC の完全な機能状態情報については、「Azure Storage の条件機能の状態」を参照してください。
ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
[前提条件]
ロールの割り当て条件を追加または編集するための前提条件の詳細については、条件の前提条件に関するページを参照してください。
この記事の例の概要
次の表を使用して、ABAC シナリオに適した例をすばやく見つけてください。 この表には、シナリオの簡単な説明と、 ソース (環境、プリンシパル、要求、リソース) 別に例で使用される属性の一覧が含まれています。
BLOB インデックス タグ
このセクションには、BLOB インデックス タグに関連する例が含まれています。
重要
Read content from a blob with tag conditions
サブ操作は現在、ABAC 機能プレビュー中に実装された条件との互換性のためにサポートされていますが、非推奨とされており、代わりに Read a blob
アクションを使用することをお勧めします。
Azure portal で ABAC 条件を構成すると、"非推奨: タグ条件を使用して BLOB からコンテンツを読み取る" と表示されることがあります。 操作を削除し、Read a blob
アクションに置き換えることをお勧めします。
タグ条件によって読み取りアクセスを制限する独自の条件を作成する場合は、「例: BLOB インデックス タグを使用した BLOB の読み取り」を参照してください。
例: BLOB インデックス タグを使用して BLOB を読み取る
この条件により、ユーザーは Project の BLOB インデックス タグ キーと値 Cascade を使用して BLOB を読み取ることができます。 このキー値タグのない BLOB へのアクセスは許可されません。
この条件をセキュリティ プリンシパルに対して有効にするには、次のアクションを含むすべてのロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal ビジュアル エディターを使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | Read a blob (BLOB を読み取る) |
Attribute source (属性ソース) | 資源 |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | {keyName} |
オペレーター | StringEquals |
価値 | {keyValue} |
例: 新しい BLOB には BLOB インデックス タグを含める必要がある
この条件では、新しい BLOB に Project の BLOB インデックス タグ キーと値 Cascade を含める必要があります。
新しい BLOB を作成できるアクションは 2 つあります。そのため、両方を対象にする必要があります。 この条件は、次のいずれかのアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Write to a blob with blob index tags (BLOB インデックス タグを使用して BLOB に書き込む) Write to a blob with blob index tags (BLOB インデックス タグを使用して BLOB に書き込む) |
Attribute source (属性ソース) | リクエスト |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | {keyName} |
オペレーター | StringEquals |
価値 | {keyValue} |
例: 既存の BLOB には BLOB インデックス タグ キーが必要
この条件では、既存の BLOB に、許可されている BLOB インデックス タグ キーの少なくとも 1 つ (Project または Program) を使用してタグ付けする必要があります。 この条件は、既存の BLOB にガバナンスを追加する場合に役立ちます。
既存の BLOB のタグを更新できるアクションは 2 つあります。そのため、両方を対象にする必要があります。 この条件は、次のいずれかのアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Write to a blob with blob index tags (BLOB インデックス タグを使用して BLOB に書き込む) Write blob index tags (BLOB インデックス タグを書き込む) |
Attribute source (属性ソース) | リクエスト |
特性 | Blob index tags [Keys] (BLOB インデックス タグ [キー]) |
オペレーター | ForAllOfAnyValues:StringEquals |
価値 | {keyName1} {keyName2} |
例: 既存の BLOB には、BLOB インデックス タグのキーと値が必要です
この条件では、既存のすべての BLOB に Project の BLOB インデックス タグ キーと Cascade、Baker、または Skagit の値が必要です。 この条件は、既存の BLOB にガバナンスを追加する場合に役立ちます。
既存の BLOB のタグを更新できるアクションは 2 つあります。そのため、両方を対象にする必要があります。 この条件は、次のいずれかのアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Write to a blob with blob index tags (BLOB インデックス タグを使用して BLOB に書き込む) Write blob index tags (BLOB インデックス タグを書き込む) |
Attribute source (属性ソース) | リクエスト |
特性 | Blob index tags [Keys] (BLOB インデックス タグ [キー]) |
オペレーター | ForAnyOfAnyValues:StringEquals |
価値 | {keyName} |
オペレーター | そして |
式 2 | |
Attribute source (属性ソース) | リクエスト |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | {keyName} |
オペレーター | ForAllOfAnyValues:StringEquals |
価値 | {keyValue1} {keyValue2} {keyValue3} |
BLOB コンテナーの名前またはパス
このセクションでは、コンテナー名または BLOB パスに基づいてオブジェクトへのアクセスを制限する方法を示す例を示します。
例: 名前付きコンテナー内の BLOB の読み取り、書き込み、または削除
この条件により、ユーザーは blobs-example-container という名前のストレージ コンテナー内の BLOB を読み取り、書き込み、または削除できます。 この条件は、サブスクリプション内の他のユーザーと特定のストレージ コンテナーを共有する場合に役立ちます。
既存の BLOB の読み取り、書き込み、削除には 5 つのアクションがあります。 この条件は、次のいずれかのアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 この条件に含まれるストレージ アカウントで階層型名前空間が有効になっているか、今後有効になる可能性がある場合に追加します。 |
サブ操作は、条件がタグに基づいて作成される場合にのみ必要であるため、この条件ではサブ操作は使用されません。
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
BLOB を削除する Read a blob (BLOB を読み取る) Write to a blob (BLOB に書き込む) Create a blob or snapshot, or append data (BLOB またはスナップショットを作成するか、データを追加する) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー名 |
オペレーター | StringEquals |
価値 | {containerName} |
例: パスを使用して名前付きコンテナー内の BLOB を読み取る
この条件により、BLOB パスが readonly/* である blobs-example-container という名前のストレージ コンテナーへの読み取りアクセスが許可されます。 この条件は、サブスクリプション内の他のユーザーと読み取りアクセスのためにストレージ コンテナーの特定の部分を共有する場合に役立ちます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 この条件に含まれるストレージ アカウントで階層型名前空間が有効になっているか、今後有効になる可能性がある場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Read a blob (BLOB を読み取る) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー名 |
オペレーター | StringEquals |
価値 | {containerName} |
式 2 | |
オペレーター | そして |
Attribute source (属性ソース) | 資源 |
特性 | BLOB パス |
オペレーター | StringLike |
価値 | {pathString} |
例: パスを持つ名前付きコンテナー内の BLOB の読み取りまたは一覧表示
この条件により、読み取りアクセスが許可され、BLOB パスが readonly/* である blobs-example-container という名前のストレージ コンテナーへのアクセスも一覧表示されます。 条件 #1 は、リスト BLOB を除く読み取りアクションに適用されます。 条件 #2 は、リスト BLOB に適用されます。 この条件は、読み取りまたはリスト アクセスのためにストレージ コンテナーの特定の部分をサブスクリプション内の他のユーザーと共有する場合に役立ちます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 この条件に含まれるストレージ アカウントで階層型名前空間が有効になっているか、今後有効になる可能性がある場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
注
Azure portal では、prefix='' を使用してコンテナーのルート ディレクトリから BLOB を一覧表示します。 プレフィックス StringStartsWith 'readonly/' を使用して BLOB の一覧表示操作で条件を追加すると、対象ユーザーは Azure portal でコンテナーのルート ディレクトリから BLOB を一覧表示できなくなります。
条件 #1 | 設定 |
---|---|
アクション |
Read a blob (BLOB を読み取る) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー名 |
オペレーター | StringEquals |
価値 | {containerName} |
式 2 | |
オペレーター | そして |
Attribute source (属性ソース) | 資源 |
特性 | BLOB パス |
オペレーター | StringStartsWith |
価値 | {pathString} |
条件 #2 | 設定 |
---|---|
アクション |
BLOB をリストする 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー名 |
オペレーター | StringEquals |
価値 | {containerName} |
式 2 | |
オペレーター | そして |
Attribute source (属性ソース) | リクエスト |
特性 | BLOB プレフィックス |
オペレーター | StringStartsWith |
価値 | {pathString} |
例: パスを使用して名前付きコンテナーに BLOB を書き込む
この条件により、パートナー (Microsoft Entra ゲスト ユーザー) は、uploads/contoso/* のパスを持つ Contosocorp という名前のストレージ コンテナーにファイルをドロップできます。 この条件は、他のユーザーがストレージ コンテナーにデータを配置できるようにするために役立ちます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 この条件に含まれるストレージ アカウントで階層型名前空間が有効になっているか、今後有効になる可能性がある場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Write to a blob (BLOB に書き込む) Create a blob or snapshot, or append data (BLOB またはスナップショットを作成するか、データを追加する) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー名 |
オペレーター | StringEquals |
価値 | {containerName} |
式 2 | |
オペレーター | そして |
Attribute source (属性ソース) | 資源 |
特性 | BLOB パス |
オペレーター | StringLike |
価値 | {pathString} |
例: BLOB インデックス タグとパスを使用して BLOB を読み取る
この条件により、ユーザーは Program の BLOB インデックス タグ キー、Alpine の値、およびログの BLOB パス* を使用して BLOB を読み取ることができます。 ログの BLOB パス* には、BLOB 名も含まれます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | Read a blob (BLOB を読み取る) |
Attribute source (属性ソース) | 資源 |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | {keyName} |
オペレーター | StringEquals |
価値 | {keyValue} |
条件 #2 | 設定 |
---|---|
アクション | Read a blob (BLOB を読み取る) |
Attribute source (属性ソース) | 資源 |
特性 | BLOB パス |
オペレーター | StringLike |
価値 | {pathString} |
BLOB コンテナーのメタデータ
例: 特定のメタデータを使用してコンテナー内の BLOB を読み取る
この条件により、ユーザーは特定のメタデータ キーと値のペアを持つ BLOB コンテナー内の BLOB を読み取ることができます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | Read a blob (BLOB を読み取る) |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー メタデータ |
オペレーター | StringEquals |
価値 | {containerName} |
例: 特定のメタデータを含むコンテナー内の BLOB を書き込むまたは削除する
この条件により、ユーザーは特定のメタデータ キーと値のペアを持つ BLOB コンテナー内の BLOB を書き込んだり削除したりできます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Write to a blob (BLOB に書き込む) BLOB を削除する |
Attribute source (属性ソース) | 資源 |
特性 | コンテナー メタデータ |
オペレーター | StringEquals |
価値 | {containerName} |
BLOB のバージョンまたは BLOB のスナップショット
このセクションでは、BLOB のバージョンまたはスナップショットに基づいてオブジェクトへのアクセスを制限する方法を示す例を示します。
例: 現在の BLOB バージョンのみを読み取る
この条件により、ユーザーは現在の BLOB バージョンのみを読み取ることができます。 ユーザーは他の BLOB バージョンを読み取ることはできません。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Read a blob (BLOB を読み取る) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | 現在のバージョンかどうか |
オペレーター | BoolEquals |
価値 | 正しい |
例: 現在の BLOB バージョンと特定の BLOB バージョンを読み取る
この条件により、ユーザーは現在の BLOB バージョンを読み取り、バージョン ID が 2022-06-01T23:38:32.8883645Z の BLOB を読み取ることができます。 ユーザーは他の BLOB バージョンを読み取ることはできません。 バージョン ID 属性は、階層型名前空間が有効になっていないストレージ アカウントでのみ使用できます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | Read a blob (BLOB を読み取る) |
Attribute source (属性ソース) | リクエスト |
特性 | バージョン ID |
オペレーター | DateTimeEquals |
価値 | <blobVersionId> |
式 2 | |
オペレーター | 又は |
Attribute source (属性ソース) | 資源 |
特性 | 現在のバージョンかどうか |
オペレーター | BoolEquals |
価値 | 正しい |
例: 古い BLOB バージョンを削除する
この条件により、ユーザーは 2022 年 6 月 1 日より前の BLOB のバージョンを削除してクリーンアップを実行できます。 バージョン ID 属性は、階層型名前空間が有効になっていないストレージ アカウントでのみ使用できます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
BLOB を削除する Delete a version of a blob (BLOB のバージョンを削除する) |
Attribute source (属性ソース) | リクエスト |
特性 | バージョン ID |
オペレーター | DateTimeLessThan |
価値 | <blobVersionId> |
例: 現在の BLOB バージョンと BLOB スナップショットを読み取る
この条件により、ユーザーは現在の BLOB バージョンと BLOB スナップショットを読み取ることができます。 バージョン ID 属性は、階層型名前空間が有効になっていないストレージ アカウントでのみ使用できます。 スナップショット属性は、階層型名前空間が有効になっていないストレージ アカウントで使用でき、階層型名前空間が有効になっているストレージ アカウントでは現在プレビュー段階です。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Read a blob (BLOB を読み取る) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | リクエスト |
特性 | スナップショット |
存在する | チェック済み |
式 2 | |
オペレーター | 又は |
Attribute source (属性ソース) | 資源 |
特性 | 現在のバージョンかどうか |
オペレーター | BoolEquals |
価値 | 正しい |
例: BLOB メタデータ、スナップショット、またはバージョンを含めるリスト BLOB 操作を許可する
この条件により、ユーザーはコンテナー内の BLOB を一覧表示し、メタデータ、スナップショット、バージョン情報を含めることができます。 List BLOB include 属性は、階層型名前空間が有効になっていないストレージ アカウントで使用できます。
注
リスト BLOB には要求属性が含まれており、include
操作を呼び出すときに、 パラメーターの値を許可または制限することで機能します。
include
パラメーターの値は、クロス積比較演算子を使用して条件で指定された値と比較されます。 比較が true と評価された場合は、 List Blobs
要求が許可されます。 比較が false と評価された場合、 List Blobs
要求は拒否されます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | BLOB をリストする |
Attribute source (属性ソース) | リクエスト |
特性 | リスト BLOB インクルード |
オペレーター | ForAllOfAnyValues:StringEqualsIgnoreCase |
価値 | {'メタデータ'、'スナップショット'、'バージョン'} |
例: BLOB のリスト操作に BLOB メタデータを含めないように制限する
この条件により、要求にメタデータが含まれている場合に、ユーザーが BLOB を一覧表示できないように制限されます。 List BLOB include 属性は、階層型名前空間が有効になっていないストレージ アカウントで使用できます。
注
リスト BLOB には要求属性が含まれており、include
操作を呼び出すときに、 パラメーターの値を許可または制限することで機能します。
include
パラメーターの値は、クロス積比較演算子を使用して条件で指定された値と比較されます。 比較が true と評価された場合は、 List Blobs
要求が許可されます。 比較が false と評価された場合、 List Blobs
要求は拒否されます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | BLOB をリストする |
Attribute source (属性ソース) | リクエスト |
特性 | リスト BLOB インクルード |
オペレーター | ForAllOfAllValues:StringNotEquals |
価値 | {'metadata'} |
階層型名前空間
このセクションでは、ストレージ アカウントに対して階層型名前空間が有効になっているかどうかに基づいて、オブジェクトへのアクセスを制限する方法を示す例を示します。
例: 階層型名前空間が有効になっている読み取り専用のストレージ アカウント
この条件により、ユーザーは 階層型名前空間 が有効になっているストレージ アカウント内の BLOB のみを読み取ることができます。 この条件は、リソース グループスコープ以上でのみ適用されます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Read a blob (BLOB を読み取る) 階層型名前空間が有効になっているアカウントのすべてのデータ操作 (該当する場合) |
Attribute source (属性ソース) | 資源 |
特性 | 階層型名前空間は有効か |
オペレーター | BoolEquals |
価値 | 正しい |
暗号化スコープ
このセクションには、承認された暗号化スコープを持つオブジェクトへのアクセスを制限する方法を示す例が含まれています。
例: 特定の暗号化スコープを持つ BLOB を読み取る
この条件により、ユーザーは暗号化スコープの validScope1
または validScope2
で暗号化された BLOB を読み取ることができます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | Read a blob (BLOB を読み取る) |
Attribute source (属性ソース) | 資源 |
特性 | 暗号化スコープ名 |
オペレーター | ForAnyOfAnyValues:StringEquals |
価値 | <scopeName> |
例: 特定の暗号化スコープを持つ名前付きストレージ アカウント内の BLOB の読み取りまたは書き込み
この条件により、ユーザーは、 sampleaccount
という名前のストレージ アカウント内の BLOB の読み取りまたは書き込みを行い、暗号化スコープの ScopeCustomKey1
で暗号化できます。 BLOB が ScopeCustomKey1
で暗号化または暗号化解除されていない場合、要求は禁止を返します。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
注
ストレージ アカウントごとに暗号化スコープが異なる可能性があるため、 storageAccounts:name
属性と encryptionScopes:name
属性を使用して、許可する特定の暗号化スコープを制限することをお勧めします。
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション |
Read a blob (BLOB を読み取る) Write to a blob (BLOB に書き込む) Create a blob or snapshot, or append data (BLOB またはスナップショットを作成するか、データを追加する) |
Attribute source (属性ソース) | 資源 |
特性 | アカウント名 |
オペレーター | StringEquals |
価値 | <アカウント名> |
式 2 | |
オペレーター | そして |
Attribute source (属性ソース) | 資源 |
特性 | 暗号化スコープ名 |
オペレーター | ForAnyOfAnyValues:StringEquals |
価値 | <scopeName> |
プリンシパル属性
このセクションでは、カスタム セキュリティ プリンシパルに基づいてオブジェクトへのアクセスを制限する方法を示す例を示します。
例: BLOB インデックス タグとカスタム セキュリティ属性に基づく BLOB の読み取りまたは書き込み
この条件により、ユーザーが BLOB インデックス タグに一致するカスタム セキュリティ属性を持っている場合、BLOB への読み取りまたは書き込みアクセスが許可されます。
たとえば、Brenda に属性 Project=Baker
がある場合、 Project=Baker
BLOB インデックス タグを持つ BLOB の読み取りまたは書き込みのみが可能です。 同様に、Chandra では、 Project=Cascade
を使用した BLOB の読み取りまたは書き込みのみが可能です。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
詳細については、「 タグとカスタム セキュリティ属性に基づいて BLOB への読み取りアクセスを許可する」を参照してください。
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | ブロブの条件を読む |
Attribute source (属性ソース) | プリンシパル |
特性 | <attributeset>_<key> |
オペレーター | StringEquals |
選択肢 | 特性 |
Attribute source (属性ソース) | 資源 |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | <鍵> |
条件 #2 | 設定 |
---|---|
アクション |
Write to a blob with blob index tags (BLOB インデックス タグを使用して BLOB に書き込む) Write to a blob with blob index tags (BLOB インデックス タグを使用して BLOB に書き込む) |
Attribute source (属性ソース) | プリンシパル |
特性 | <attributeset>_<key> |
オペレーター | StringEquals |
選択肢 | 特性 |
Attribute source (属性ソース) | リクエスト |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | <鍵> |
例: BLOB インデックス タグと複数値のカスタム セキュリティ属性に基づいて BLOB を読み取る
この条件により、ユーザーが BLOB インデックス タグに一致する値を持つカスタム セキュリティ属性を持っている場合、BLOB への読み取りアクセスが許可されます。
たとえば、もし Chandra がベイカーとカスケードという値を持つ Project 属性を持っている場合、Project=Baker
または Project=Cascade
のインデックスタグが付いている BLOB のみを読み取ることができます。
この条件は、次のアクションを含むロールの割り当てに追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
詳細については、「 タグとカスタム セキュリティ属性に基づいて BLOB への読み取りアクセスを許可する」を参照してください。
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal を使用してこの条件を追加する設定を次に示します。
条件 #1 | 設定 |
---|---|
アクション | ブロブの条件を読む |
Attribute source (属性ソース) | 資源 |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) |
鍵 | <鍵> |
オペレーター | ForAnyOfAnyValues:StringEquals |
選択肢 | 特性 |
Attribute source (属性ソース) | プリンシパル |
特性 | <attributeset>_<key> |
環境属性
このセクションでは、ネットワーク環境または現在の日時に基づいてオブジェクトへのアクセスを制限する方法を示す例を示します。
例: 特定の日時より後の BLOB への読み取りアクセスを許可する
この条件により、2023 年 5 月 1 日の午後 1 時 (UTC) より後にのみ、BLOB コンテナー container1
への読み取りアクセスが許可されます。
既存の BLOB を読み取るための 2 つの潜在的なアクションがあります。 複数のロールの割り当てを持つプリンシパルに対してこの条件を有効にするには、次のいずれかのアクションを含むすべてのロールの割り当てにこの条件を追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
アクションを追加する
アクションを追加 を選択し、その後、次に示す表のように BLOB を読み取る サブ操作のみを選択します。
アクション | サブ操作 |
---|---|
すべての読み取り操作 | Read a blob (BLOB を読み取る) |
次の図に示すように、[ すべての読み取り操作 ] アクションまたはその他のサブ操作を最上位レベルで選択しないでください。
式の作成
次の表の値を使用して、条件の式部分を作成します。
設定 価値 Attribute source (属性ソース) 資源 特性 コンテナー名 オペレーター StringEquals 価値 container1
論理演算子 'AND' Attribute source (属性ソース) 環境 特性 UtcNow オペレーター DateTimeGreaterThan 価値 2023-05-01T13:00:00.000Z
次の図は、Azure portal に設定が入力された後の条件を示しています。 正しい評価を確実に行うには、式をグループ化する必要があります。
例: 特定のサブネットから特定のコンテナー内の BLOB へのアクセスを許可する
この条件により、仮想ネットワーク container1
上のサブネット default
からのみ、virtualnetwork1
内の BLOB への読み取り、書き込み、追加、削除のアクセスが許可されます。 この例で Subnet 属性を使用するには、サブネットで Azure Storage の サービス エンドポイントが有効になっている 必要があります。
既存の BLOB への読み取り、書き込み、追加、削除のアクセスには、5 つの潜在的なアクションがあります。 複数のロールの割り当てを持つプリンシパルに対してこの条件を有効にするには、次のいずれかのアクションを含むすべてのロールの割り当てにこの条件を追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
アクションを追加する
[ アクションの追加] を選択し、次の表に示す最上位レベルのアクションのみを選択します。
アクション | サブ操作 |
---|---|
すべての読み取り操作 | 該当なし |
Write to a blob (BLOB に書き込む) | 該当なし |
Create a blob or snapshot, or append data (BLOB またはスナップショットを作成するか、データを追加する) | 該当なし |
BLOB を削除する | 該当なし |
次の図に示すように、個々のサブ操作を選択しないでください。
式の作成
次の表の値を使用して、条件の式部分を作成します。
設定 価値 Attribute source (属性ソース) 資源 特性 コンテナー名 オペレーター StringEquals 価値 container1
論理演算子 'AND' Attribute source (属性ソース) 環境 特性 サブネット オペレーター StringEqualsIgnoreCase 価値 /subscriptions/<your subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/virtualnetwork1/subnets/default
次の図は、Azure portal に設定が入力された後の条件を示しています。 正しい評価を確実に行うには、式をグループ化する必要があります。
例: 秘密度の高い BLOB を読み取るためにプライベート リンク アクセスを要求する
この条件では、BLOB インデックス タグの sensitivity の値がプライベート リンク (任意のプライベート リンク) 上で high
に設定されている BLOB の読み取り要求が必要です。 つまり、パブリック インターネットから機密性の高い BLOB を読み取ろうとしても許可されません。 ユーザーは、sensitivity が high
以外の値に設定されているパブリック インターネットから BLOB を読み取ることができます。
この ABAC サンプル条件の真偽表は次のとおりです。
アクション | 感受性 | プライベート リンク | Access |
---|---|---|---|
Read a blob (BLOB を読み取る) | 高い | はい | 許可 |
Read a blob (BLOB を読み取る) | 高い | いいえ | 不可 |
Read a blob (BLOB を読み取る) | 高くない | はい | 許可 |
Read a blob (BLOB を読み取る) | 高くない | いいえ | 許可 |
既存の BLOB を読み取るための 2 つの潜在的なアクションがあります。 複数のロールの割り当てを持つプリンシパルに対してこの条件を有効にするには、次のいずれかのアクションを含むすべてのロールの割り当てにこの条件を追加する必要があります。
アクション 注記 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal のビジュアル条件エディターを使用してこの条件を追加する設定を次に示します。
アクションを追加する
アクションを追加 を選択し、その後、次に示す表のように BLOB を読み取る サブ操作のみを選択します。
アクション | サブ操作 |
---|---|
すべての読み取り操作 | Read a blob (BLOB を読み取る) |
次の図に示すように、他のサブ操作の最上位レベル の [すべての読み取り操作 ] アクションを選択しないでください。
式の作成
次の表の値を使用して、条件の式部分を作成します。
グループ 設定 価値 グループ #1 Attribute source (属性ソース) 資源 特性 Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) 鍵 sensitivity
オペレーター StringEquals 価値 high
論理演算子 'AND' Attribute source (属性ソース) 環境 特性 プライベート リンク オペレーター BoolEquals 価値 True
第1グループの終了 論理演算子 'OR' Attribute source (属性ソース) 資源 特性 Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) 鍵 sensitivity
オペレーター StringNotEquals 価値 high
次の図は、Azure portal に設定が入力された後の条件を示しています。 正しい評価を確実に行うには、式をグループ化する必要があります。
例: 特定のプライベート エンドポイントからのみコンテナーへのアクセスを許可する
この条件では、container1
という名前のプライベート エンドポイントを使用して、privateendpoint1
という名前のストレージ コンテナー内の BLOB に対するすべての読み取り、書き込み、追加、および削除操作を行う必要があります。
container1
という名前ではない他のすべてのコンテナーについては、プライベート エンドポイント経由でアクセスする必要はありません。
既存の BLOB の読み取り、書き込み、削除には、5 つの潜在的なアクションがあります。 複数のロールの割り当てを持つプリンシパルに対してこの条件を有効にするには、次のいずれかのアクションを含むすべてのロールの割り当てにこの条件を追加する必要があります。
アクション | 注記 |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。 この条件に含まれるストレージ アカウントで階層型名前空間が有効になっているか、今後有効になる可能性がある場合に追加します。 |
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal のビジュアル条件エディターを使用してこの条件を追加する設定を次に示します。
アクションを追加する
[ アクションの追加] を選択し、次の表に示す最上位レベルのアクションのみを選択します。
アクション | サブ操作 |
---|---|
すべての読み取り操作 | 該当なし |
Write to a blob (BLOB に書き込む) | 該当なし |
Create a blob or snapshot, or append data (BLOB またはスナップショットを作成するか、データを追加する) | 該当なし |
BLOB を削除する | 該当なし |
次の図に示すように、個々のサブ操作を選択しないでください。
式の作成
次の表の値を使用して、条件の式部分を作成します。
グループ 設定 価値 グループ #1 Attribute source (属性ソース) 資源 特性 コンテナー名 オペレーター StringEquals 価値 container1
論理演算子 'AND' Attribute source (属性ソース) 環境 特性 プライベート エンドポイント オペレーター StringEqualsIgnoreCase 価値 /subscriptions/<your subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateEndpoints/privateendpoint1
第1グループの終了 論理演算子 'OR' Attribute source (属性ソース) 資源 特性 コンテナー名 オペレーター StringNotEquals 価値 container1
次の図は、Azure portal に設定が入力された後の条件を示しています。 正しい評価を確実に行うには、式をグループ化する必要があります。
例: 機密性の高い BLOB データへの読み取りアクセスを特定のプライベート エンドポイントからのみ許可し、アクセス用にタグ付けされたユーザーが許可する
この条件では、インデックス タグ の秘密度 が high
に設定されている BLOB は、 秘密度 セキュリティ属性に一致する値を持つユーザーのみが読み取ることができる必要があります。 さらに、 privateendpoint1
という名前のプライベート エンドポイント経由でアクセスする必要があります。
秘密度タグの値が異なる BLOB には、他のエンドポイントまたはインターネット経由でアクセスできます。
既存の BLOB を読み取るための 2 つの潜在的なアクションがあります。 複数のロールの割り当てを持つプリンシパルに対してこの条件を有効にするには、次のいずれかのアクションを含むすべてのロールの割り当てにこの条件を追加する必要があります。
アクション 注記 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action
ロール定義にこのアクション (ストレージ BLOB データ所有者など) が含まれている場合に追加します。
Azure portal または Azure PowerShell を使用して、条件をロールの割り当てに追加できます。 ポータルには、ABAC 条件を構築するための 2 つのツール (ビジュアル エディターとコード エディター) があります。 Azure portal で 2 つのエディターを切り替えて、さまざまなビューで条件を表示できます。 [ビジュアル エディター] タブと [コード エディター] タブを切り替えて、好みのポータル エディターの例を表示します。
Azure portal のビジュアル条件エディターを使用してこの条件を追加する設定を次に示します。
アクションを追加する
アクションを追加 を選択し、その後、次に示す表のように BLOB を読み取る サブ操作のみを選択します。
アクション | サブ操作 |
---|---|
すべての読み取り操作 | Read a blob (BLOB を読み取る) |
次の図に示すように、最上位レベルのアクションを選択しないでください。
式の作成
次の表の値を使用して、条件の式部分を作成します。
グループ | 設定 | 価値 |
---|---|---|
グループ #1 | ||
Attribute source (属性ソース) | プリンシパル | |
特性 | <attributeset>_<key> | |
オペレーター | StringEquals | |
選択肢 | 特性 | |
論理演算子 | 'AND' | |
Attribute source (属性ソース) | 資源 | |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) | |
鍵 | <鍵> | |
論理演算子 | 'AND' | |
Attribute source (属性ソース) | 環境 | |
特性 | プライベート エンドポイント | |
オペレーター | StringEqualsIgnoreCase | |
価値 | /subscriptions/<your subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateEndpoints/privateendpoint1 |
|
第1グループの終了 | ||
論理演算子 | 'OR' | |
Attribute source (属性ソース) | 資源 | |
特性 | Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) | |
鍵 | sensitivity |
|
オペレーター | StringNotEquals | |
価値 | high |
次の図は、Azure portal に設定が入力された後の条件を示しています。 正しい評価を確実に行うには、式をグループ化する必要があります。