ほとんどの場合、ロールの割り当てによって、Azure リソースに必要なアクセス許可が付与されます。 ただし、場合によっては、ロールの割り当て条件を追加して、より詳細なアクセス制御を提供することが必要になる場合があります。
このチュートリアルでは、以下の内容を学習します。
- ロールの割り当てに条件を追加する
- BLOB インデックス タグに基づいて BLOB へのアクセスを制限する
Von Bedeutung
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 プレビューの追加使用条件」を参照してください。
[前提条件]
ロールの割り当て条件を追加または編集するための前提条件の詳細については、条件の前提条件に関するページを参照してください。
条件
このチュートリアルでは、特定のタグを持つ BLOB へのアクセスを制限します。 たとえば、Chandra がタグ Project=Cascade
を持つファイルのみを読み取ることができるように、ロールの割り当てに条件を追加します。
Chandra がタグ Project=Cascade
なしで BLOB を読み取ろうとした場合、アクセスは許可されません。
コードの条件は次のようになります。
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
AND NOT
SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'
)
)
手順 1: ユーザーを作成する
サブスクリプションの所有者として Azure portal にサインインします。
[Microsoft Entra ID] を選びます。
ユーザーを作成するか、既存のユーザーを検索します。 このチュートリアルでは、例として Chandra を使用します。
手順 2: ストレージを設定する
BLOB インデックス タグ機能と互換性のあるストレージ アカウントを作成します。 詳細については、「BLOB インデックス タグを使用して Azure BLOB データを管理および検索する」を参照してください。
ストレージ アカウント内に新しいコンテナーを作成し、匿名アクセス レベルを プライベート (匿名アクセスなし) に設定します。
コンテナーで 、[ アップロード ] を選択して [BLOB のアップロード] ウィンドウを開きます。
アップロードするテキスト ファイルを見つけます。
[ 詳細設定] を 選択してウィンドウを展開します。
[ BLOB インデックス タグ ] セクションで、次の BLOB インデックス タグをテキスト ファイルに追加します。
[BLOB インデックス タグ] セクションが表示されておらず、サブスクリプションを登録したばかりの場合は、変更が反映されるまで数分待つ必要がある場合があります。 詳細については、「 BLOB インデックス タグを使用して Azure Blob Storage のデータを管理および検索する」を参照してください。
注
BLOB は、任意のユーザー定義のキー値メタデータを格納する機能もサポートしています。 メタデータは BLOB インデックス タグに似ていますが、BLOB インデックス タグは条件と共に使用する必要があります。
鍵 価値 プロジェクト Cascade
[ アップロード ] ボタンを選択してファイルをアップロードします。
2 番目のテキスト ファイルをアップロードします。
次の BLOB インデックス タグを 2 番目のテキスト ファイルに追加します。
鍵 価値 プロジェクト ベイカー
手順 3: ストレージ BLOB データ ロールを割り当てる
リソース グループを開きます。
[アクセス制御 (IAM)] を選択します。
[ロールの割り当て] タブを選択して、このスコープのロールの割り当てを表示します。
[追加>][ロール割り当ての追加] の順に選択します。 [ロールの割り当ての追加] ページが開きます。
- [ ロール ] タブで、 ストレージ BLOB データ閲覧者ロールを 選択します。
- [ メンバー ] タブで、前に作成したユーザーを選択します。
(省略可能)[ 説明 ] ボックスに、「 Project=Cascade」というタグを持つ BLOB への読み取りアクセスを入力します。
[次へ] を選択します。
手順 4: 条件を追加する
- [ 条件 (省略可能)] タブで 、[ 条件の追加] を選択します。 [ロールの割り当ての条件の追加] ページが表示されます。
[アクションの追加] セクションで、[ アクションの追加] を選択します。
[アクションの選択] ウィンドウが表示されます。 このウィンドウは、条件のターゲットとなるロールの割り当てに基づいて、フィルター処理されたデータ アクションの一覧です。 「Blobの読み取り」の横にあるチェックボックスをオンにして、「選択」をクリックします。
[ビルド式] セクションで、[ 式の追加] を選択します。
[式] セクションが展開されます。
次の式の設定を指定します。
設定 価値 Attribute source (属性ソース) リソース 特性 Blob index tags [Values in key] (BLOB インデックス タグ [キー内の値]) 鍵 プロジェクト オペレーター StringEqualsIgnoreCase 価値 Cascade
[ エディターの種類] まで上にスクロールし、[ コード] を選択します。
条件はコードとして表示されます。 このコード エディターで条件を変更できます。 ビジュアル エディターに戻るには、[ ビジュアル] を選択します。
[ 保存] を 選択して条件を追加し、[ロールの割り当ての追加] ページに戻ります。
[次へ] を選択します。
[ 確認と割り当て ] タブで、[ 確認と割り当て ] を選択して、条件を持つロールを割り当てます。
しばらくすると、選択したスコープでセキュリティ プリンシパルにロールが割り当てられます。
手順 5: 閲覧者ロールを割り当てる
前の手順を繰り返して、リソース グループ スコープで先ほど作成したユーザーに 閲覧者 ロールを割り当てます。
注
通常、閲覧者ロールを割り当てる必要はありません。 ただし、これは、Azure portal を使用して条件をテストできるように行われます。
手順 6: 条件をテストする
新しいウィンドウで、Azure Portal にサインインします。
前に作成したユーザーとしてサインインします。
作成したストレージ アカウントとコンテナーを開きます。
認証方法がアクセス キーではなく Microsoft Entra ユーザー アカウントに設定されていることを確認します。
ベイカー テキスト ファイルを選択します。
BLOB を表示またはダウンロードできない で、認証失敗のメッセージが表示されるはずです。
[カスケード テキスト ファイル] を選択します。
BLOB を表示したりダウンロードしたりできるはずです。
手順 7: リソースをクリーンアップする
追加したロールの割り当てを削除します。
作成したテスト ストレージ アカウントを削除します。
作成したユーザーを削除します。