チュートリアル: ドキュメントを匿名化するように Azure Storage を構成する
Azure Health Data Services の匿名化サービスでは、非同期ジョブを介して Azure Storage 内のドキュメントを匿名化できます。 匿名化するドキュメントが多数ある場合は、ジョブを使用することをお勧めします。 また、ジョブは一貫サブロゲーションを提供します。つまり、匿名化された出力の代理値はすべてのドキュメントで一致します。 一貫サブロゲーションを含む匿名化の詳細については、「匿名化サービスとは」を参照してください。
Azure Blob Storage にドキュメントを格納する場合は、Azure Storage の価格に基づいて課金されます。 このコストは、匿名化サービスの価格には含まれません。 Azure Blob Storage の価格を調査します。
このチュートリアルでは、次の作業を行いました。
- ストレージ アカウントとコンテナーの作成
- サンプル ドキュメントをアップロードする
- 匿名化サービスへのアクセスを許可する
- ネットワークの分離を設定する
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- システム割り当てマネージド ID を持つ匿名化サービス。 匿名化サービスをデプロイする
Azure CLI を開く
Azure CLI をインストールし、任意のターミナルを開きます。 このチュートリアルでは、PowerShell を使用しています。
ストレージ アカウントとコンテナーの作成
<subscription_name>
プレースホルダーを、匿名化サービスを含むサブスクリプション名に置き換えて、コンテキストを設定します。az account set --subscription "<subscription_name>"
<resource_group>
プレースホルダーを、匿名化サービスを含むリソース グループに置き換えて、リソース グループの変数を保存します。$ResourceGroup = "<resource_group>"
- ストレージ アカウントを作成し、
<storage_account_name>
プレースホルダーの値を指定します。$StorageAccountName = "<storage_account_name>" $StorageAccountId = $(az storage account create --name $StorageAccountName --resource-group $ResourceGroup --sku Standard_LRS --kind StorageV2 --min-tls-version TLS1_2 --allow-blob-public-access false --query id --output tsv)
- ストレージ アカウントに対してデータ操作を実行するロールを自分に割り当てます。
$UserId = $(az ad signed-in-user show --query id -o tsv) az role assignment create --role "Storage Blob Data Contributor" --assignee $UserId --scope $StorageAccountId
- サンプル ドキュメントを保持するコンテナーを作成します。
az storage container create --account-name $StorageAccountName --name deidtest --auth-mode login
サンプル ドキュメントをアップロードする
次に、合成 PHI を含むドキュメントをアップロードします。
$DocumentContent = "The patient came in for a visit on 10/12/2023 and was seen again November 4th at Contoso Hospital."
az storage blob upload --data $DocumentContent --account-name $StorageAccountName --container-name deidtest --name deidsample.txt --auth-mode login
匿名化サービスにストレージ アカウントへのアクセス権を付与する
この手順では、匿名化サービスのシステム割り当てマネージド ID ロールベースのアクセス権をコンテナーに付与します。 匿名化サービスは元のドキュメントの読み取りと、匿名化された出力ドキュメントの書き込みの両方を行うため、ストレージ BLOB データ共同作成者ロールを付与します。 <deid_service_name>
プレースホルダーを匿名化サービスの名前に置き換えます。
$DeidServicePrincipalId=$(az resource show -n <deid_service_name> -g $ResourceGroup --resource-type microsoft.healthdataaiservices/deidservices --query identity.principalId --output tsv)
az role assignment create --assignee $DeidServicePrincipalId --role "Storage Blob Data Contributor" --scope $StorageAccountId
ストレージ アカウントでネットワークの分離を構成する
次に、ストレージ アカウントを更新してパブリック ネットワーク アクセスを無効にし、匿名化サービスなどの信頼された Azure サービスからのアクセスのみを許可します。 このコマンドを実行した後は、ネットワーク例外を設定しないと、ストレージ コンテナーの内容を表示できなくなります。 詳細については、「Azure Storage ファイアウォールおよび仮想ネットワークを構成する」を参照してください。
az storage account update --name $StorageAccountName --public-network-access Disabled --bypass AzureServices
リソースをクリーンアップする
ストレージ アカウントの使用が完了したら、ストレージ アカウントとロールの割り当てを削除できます。
az role assignment delete --assignee $DeidServicePrincipalId --role "Storage Blob Data Contributor" --scope $StorageAccountId
az role assignment delete --assignee $UserId --role "Storage Blob Data Contributor" --scope $StorageAccountId
az storage account delete --ids $StorageAccountId --yes