はじめに
運用環境レベルでデータパイプラインによる Azure Blob または ADLS 出力をする場合のベストプラクティスを紹介します。
Azure Blob Storage のセキュリティ構成
認証のベストプラクティス: Azure Blob Storage への Entra ID認証
Azure Blob ストレージには キー認証(Shared Key) と ID ベース認証(Microsoft Entra ID 認証) の2種類のアクセス方法があります。
セキュリティの観点から、Microsoft は ID ベース認証を推奨しています。
Microsoft Entra ID を使用して BLOB データへのアクセスを承認する
引用:https://learn.microsoft.com/ja-jp/azure/storage/blobs/security-recommendations
したがって以下の Azure RBAC ロールを割り当てる必要があります。
または、Azure Data Lake Storage のアクセス制御モデル に記載のより細かな粒度でのアクセス制御を利用します
これらのロールには Data Actions が含まれるため blob の操作が可能です。
引用:https://learn.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles/storage#storage-blob-data-contributor
参考
Entra ID 認証でのアクセスをベースラインにしていた場合、
推奨事項の一つである、
共有キーによる認可を禁止する
引用:https://learn.microsoft.com/ja-jp/azure/storage/blobs/security-recommendations
についても適用可能となります。
ネットワークセキュリティのベストプラクティス
全てのネットワークアクセスではなく、選択した仮想ネットワークと IP アドレスから有効 か、無効にします。
ファイアウォール規則を有効にする
引用:https://learn.microsoft.com/ja-jp/azure/storage/blobs/security-recommendations
※無効にした場合には今回紹介する方法は採用不可となります。プライベートエンドポイントにアクセス可能なオンプレミスデータゲートウェイなどを使用してください。
手順
実際に Fabric データパイプラインでデータを書き込むための構成をしていきます。
セキュアなストレージへのアクセス機能として、 信頼されたワークスペース アクセス を使用します。
1. ワークスペース ID の構成
Fabric ワークスペースの設定から、ワークスペース ID の作成を選択します。
作成が完了したら、url から workspace の id をメモします。
この画面に表れている 2 つの ID は以下のような役割を持ちます。
対象 | 役割 |
---|---|
URL上のID | Azure リソースインスタンスとしての ID |
ワークスペース ID 機能で生成した ID | ストレージなどに認証を行うときに利用できるサービスプリンシパルとしての ID |
2. ストレージの構成
Entra ID 認可
ストレージ Blog 共同作成者ロールを ワークスペース ID に割り当てます。ワークスペース名で検索が可能です
割当が完了しました。
ネットワーク認可
ネットワーク認可の方法には、以下の 2 通りがあります。
テナント全体で許可(すべてのワークスペースを許可するシンプルな方法)
特定のワークスペースのみ許可(セキュリティを強化した方法)
テナント全体で許可
同一テナントのワークスペースからのアクセスは全て許可する場合にはこちらが簡単です。
ネットワーク設定にて、Microsoft.Fabric/workspaces に類するリソースインスタンスを現在のテナント内のすべてで許可します。
特定のワークスペースのみ許可
以下の ARM テンプレートを使用します。<>は置き換える必要があります。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "<storage account name>",
"id": "/subscriptions/<subscription id of storage account>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name>",
"location": "<region>",
"kind": "StorageV2",
"properties": {
"networkAcls": {
"resourceAccessRules": [
{
"tenantId": "<tenantid>",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabric/providers/Microsoft.Fabric/workspaces/<workspace-id>"
}]
}
}
}
]
}
設定を完了すると、以下のようになります。
3. データパイプラインの作成
コピーアシスタントで作成していきます。
サンプルデータを使います。
Azure Data Lake を選択
url を設定し、認証の種類をワークスペース ID にします。
任意のエンドポイントであて先を設定します。
詳細設定とレビューを行い、
コピーアクティビティが完成し、実行ができます。
ファイルを確認できます。
以上です。ご活用ください。