Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El servicio de desidentificación de Azure Health Data Services puede desidentificar documentos en Azure Storage a través de un trabajo asincrónico. Si tiene muchos documentos que desea desidentificar, usar un trabajo es una buena opción. Los trabajos también proporcionan una subrogación coherente, lo que significa que los valores suplentes de la salida desidentificada coincidirán en todos los documentos. Para más información sobre la desidentificación, incluida la subrogación coherente, consulte ¿Qué es el servicio de desidentificación?
Si elige almacenar documentos en Azure Blob Storage, se le cobrará en función de los precios de Azure Storage. Este costo no se incluye en los precios del servicio de desidentificación. Explore los precios de Azure Blob Storage.
En este tutorial, usted hará lo siguiente:
- Creación de una cuenta de almacenamiento y un contenedor
- Carga de un documento de ejemplo
- Concesión del acceso al servicio de desidentificación
- Configuración del aislamiento de red
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un servicio de desidentificación con identidad administrada asignada por el sistema. Implementación del servicio de desidentificación.
Abrir CLI de Azure
Instale la CLI de Azure y abra el terminal que prefiera. En este tutorial, se usa PowerShell.
Creación de una cuenta de almacenamiento y un contenedor
- Establezca el contexto y sustituya el nombre de la suscripción que contiene el servicio de desidentificación para el marcador de posición
<subscription_name>
:az account set --subscription "<subscription_name>"
- Guarde una variable para el grupo de recursos. Al hacerlo, sustituya el grupo de recursos que contiene el servicio de desidentificación por el marcador de posición
<resource_group>
:$ResourceGroup = "<resource_group>"
- Cree una cuenta de almacenamiento y proporcione un valor para el marcador de posición
<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)
- Asigne un rol para realizar operaciones de datos en la cuenta de almacenamiento:
$UserId = $(az ad signed-in-user show --query id -o tsv) az role assignment create --role "Storage Blob Data Contributor" --assignee $UserId --scope $StorageAccountId
- Cree un contenedor que aloje el documento de ejemplo:
az storage container create --account-name $StorageAccountName --name deidtest --auth-mode login
Carga de un documento de ejemplo
A continuación, cargue un documento que contenga información médica protegida (PHI) sintética:
$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
Concesión de acceso del servicio de desidentificación a la cuenta de almacenamiento
En este paso, concederá acceso basado en roles a la identidad administrada asignada por el sistema del servicio de desidentificación al contenedor. Concede el rol Colaborador de datos de Storage Blob porque el servicio de desidentificación leerá el documento original y escribirá documentos de salida desidentificados. Sustituya el nombre del servicio de desidentificación para el marcador de posición <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
Para comprobar que el servicio de desidentificación tiene acceso a la cuenta de almacenamiento, puede comprobar en Azure Portal en cuentas de almacenamiento. En la pestaña Centro de almacenamiento y recursos , haga clic en el nombre de la cuenta de almacenamiento. Seleccione Control de acceso (IAM) y, en la barra de búsqueda, busque el nombre del servicio de desidentificación ($ResourceGroup).
Configuración del aislamiento de red en la cuenta de almacenamiento
A continuación, actualice la cuenta de almacenamiento para deshabilitar el acceso a la red pública y permitir solo el acceso desde servicios de Azure de confianza, como el servicio de desidentificación. Después de ejecutar este comando, no podrá ver el contenido del contenedor de almacenamiento sin establecer una excepción de red. Obtenga más información en Configuración de redes virtuales y firewalls de Azure Storage.
az storage account update --name $StorageAccountName --public-network-access Disabled --bypass AzureServices
Uso del SDK de Python
El código siguiente contiene un ejemplo del SDK de desidentificación de Azure Health para Python.
"""
FILE: deidentify_documents_async.py
DESCRIPTION:
This sample demonstrates a basic scenario of de-identifying documents in Azure Storage.
Taking a container URI and an input prefix, the sample will create a job and wait for the job to complete.
USAGE:
python deidentify_documents_async.py
Set the environment variables with your own values before running the sample:
1) endpoint - the service URL endpoint for a de-identification service.
2) storage_location - an Azure Storage container endpoint, like "https://<storageaccount>.blob.core.windows.net/<container>".
3) INPUT_PREFIX - the prefix of the input document name(s) in the container.
For example, providing "folder1" would create a job that would process documents like "https://<storageaccount>.blob.core.windows.net/<container>/folder1/document1.txt".
"""
import asyncio
from azure.core.polling import AsyncLROPoller
from azure.health.deidentification.aio import DeidentificationClient
from azure.health.deidentification.models import (
DeidentificationJob,
SourceStorageLocation,
TargetStorageLocation,
)
from azure.identity.aio import DefaultAzureCredential
import os
import uuid
async def deidentify_documents_async():
endpoint = "<YOUR SERVICE URL HERE>" ### Replace
storage_location = "https://<CONTAINER NAME>.blob.core.windows.net/deidtest/" ### Replace <CONTAINER NAME>
inputPrefix = "deidsample"
outputPrefix = "_output"
credential = DefaultAzureCredential()
client = DeidentificationClient(endpoint, credential)
jobname = f"sample-job-{uuid.uuid4().hex[:8]}"
job = DeidentificationJob(
source_location=SourceStorageLocation(
location=storage_location,
prefix=inputPrefix,
),
target_location=TargetStorageLocation(location=storage_location, prefix=outputPrefix, overwrite=True),
)
async with client:
lro: AsyncLROPoller = await client.begin_deidentify_documents(jobname, job)
finished_job: DeidentificationJob = await lro.result()
await credential.close()
print(f"Job Name: {finished_job.job_name}")
print(f"Job Status: {finished_job.status}") # Succeeded
print(f"File Count: {finished_job.summary.total_count if finished_job.summary is not None else 0}")
async def main():
await deidentify_documents_async()
if __name__ == "__main__":
asyncio.run(main())
Limpieza de recursos
Una vez que haya terminado con la cuenta de almacenamiento, puede eliminarla junto con las asignaciones de roles:
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