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.
En este artículo se describe cómo crear credenciales de almacenamiento en el catálogo de Unity para conectarse a AWS S3. La compatibilidad con S3 en Azure Databricks es de solo lectura.
Una credencial de almacenamiento contiene una credencial de nube a largo plazo con acceso al almacenamiento en la nube. Se hace referencia a una credencial de almacenamiento y la ruta de acceso de almacenamiento en la nube al crear ubicaciones externas en el catálogo de Unity para controlar el acceso al almacenamiento externo.
Para obtener más información sobre las credenciales de almacenamiento y las ubicaciones externas, consulte Conexión al almacenamiento de objetos en la nube mediante el catálogo de Unity.
Para obtener información sobre otras opciones de almacenamiento en la nube compatibles con el catálogo de Unity, consulte Opciones de almacenamiento en la nube compatibles con Unity Catalog.
Nota:
Es posible que se apliquen cargos por transferencia de datos entre nubes. Al usar el cálculo sin servidor, se le factura de acuerdo con la política de transferencia de datos y conectividad de Databricks.
Creación de la credencial de almacenamiento
Para crear una credencial de almacenamiento para acceder a un cubo S3, cree un rol de AWS IAM que autorice el acceso a la ruta de acceso del cubo S3 y haga referencia a ese rol de IAM en la definición de credenciales de almacenamiento.
Requisitos
En Azure Databricks:
- Área de trabajo de Azure Databricks habilitada para el catálogo de Unity.
- Privilegio
CREATE STORAGE CREDENTIALen el metastore de Unity Catalog asociado al área de trabajo. Los administradores de cuentas y los administradores de metastore tienen este privilegio de manera predeterminada.
En su cuenta de AWS:
Un cubo S3 que cumpla los siguientes requisitos:
- No use la notación de puntos (por ejemplo,
incorrect.bucket.name.notation) en los nombres de bucket de S3. Aunque AWS permite puntos en los nombres de buckets, Azure Databricks no admite buckets S3 con notación con puntos. Los cubos que contienen puntos pueden causar problemas de compatibilidad con características como Delta Sharing debido a errores de validación de certificados SSL. Para obtener más información, consulte los procedimientos recomendados de nomenclatura de cubos de AWS. - El cubo no puede tener adjunta una lista de control de acceso a S3.
- No use la notación de puntos (por ejemplo,
La capacidad de crear roles IAM.
Paso 1: Crear un rol de IAM
En AWS, cree un rol de IAM que proporcione acceso al cubo S3 al que desea que accedan los usuarios. Este rol IAM debe definirse en la misma cuenta que el bucket S3.
Sugerencia
Si ya ha creado un rol de IAM que proporciona este acceso, puede omitir este paso y ir directamente al paso 2: Proporcionar a Azure Databricks los detalles del rol de IAM.
Crear un rol IAM que permita el acceso al bucket S3.
La creación de roles es un proceso de dos pasos. En este paso se crea el rol, añadiendo una política de relación de confianza temporal y un ID externo de marcador de posición que luego se modifica después de crear la credencial de almacenamiento en Azure Databricks.
Debe modificar la directiva de confianza después de crear el rol porque el rol debe asumirse automáticamente (es decir, debe configurarse para confiar en sí mismo). Por lo tanto, el rol debe existir antes de agregar la declaración de autoasunción. Para obtener información sobre los roles que se asumen automáticamente, consulte este artículo de blog de Amazon.
Importante
Databricks bloquea las credenciales de almacenamiento nuevas y existentes basadas en roles de IAM que no se asumen automáticamente. Para obtener más información, consulte Política de aplicación de roles autoasumidos.
Para crear la política, debe utilizar un ID externo de marcador de posición.
Cree el rol de IAM con una Política de confianza personalizada.
En el campo Directiva de confianza personalizada, pegue el siguiente JSON de la directiva.
Esta directiva establece una relación de confianza entre cuentas para que Unity Catalog pueda asumir el rol para acceder a los datos del cubo en nombre de los usuarios de Databricks. El ARN especifica esto en la
Principalsección . Es un valor estático que hace referencia a un rol creado por Databricks.La política establece el ID externo en
0000como marcador de posición. Usted actualizará esto a la identificación externa de su credencial de almacenamiento en un paso posterior.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q"] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "0000" } } } ] }Omita la configuración de la directiva de permisos. Volverás a agregarlo en otra etapa.
Guarde el rol IAM.
Cree la siguiente política de IAM en la misma cuenta que el bucket de S3, sustituyendo los siguientes valores:
-
<BUCKET>: El nombre del bucket de S3. -
<KMS-KEY>: opcional. Si el cifrado está habilitado, proporcione el nombre de la clave KMS que cifra el contenido del cubo S3. Si el cifrado está deshabilitado, quite toda la sección KMS de la política de IAM. -
<AWS-ACCOUNT-ID>: el identificador de cuenta de su cuenta de AWS (no su cuenta de Databricks). -
<AWS-IAM-ROLE-NAME>: nombre del rol de AWS IAM que creó en el paso anterior.
Esta política IAM concede acceso de lectura y escritura. También puede crear una política que solo conceda acceso de lectura. Sin embargo, esto puede ser innecesario porque puede marcar la credencial de almacenamiento como de solo lectura, y cualquier acceso de escritura concedido por este rol de IAM será ignorado.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"], "Effect": "Allow" }, { "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"], "Resource": ["arn:aws:kms:<KMS-KEY>"], "Effect": "Allow" }, { "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"], "Effect": "Allow" } ] }Nota:
Si necesita una directiva de IAM más restrictiva para el catálogo de Unity, póngase en contacto con el equipo de la cuenta de Azure Databricks para obtener ayuda.
-
Cree una política de IAM para eventos de archivo en la misma cuenta que el bucket de S3.
Nota:
Este paso es opcional, pero muy recomendable. Si no concede a Azure Databricks acceso para configurar eventos de archivo en su nombre, debe configurar los eventos de archivo manualmente para cada ubicación. Si no lo hace, su acceso a las características críticas que Databricks pueda publicar en el futuro estará limitado. Para obtener más información sobre los eventos de archivo, vea (Recomendado) Habilitar eventos de archivo para una ubicación externa.
La política de IAM concede permiso a Azure Databricks para actualizar la configuración de notificación de eventos de su bucket, crear un tema SNS, crear una cola SQS y suscribir la cola SQS al tema SNS. Estos son recursos necesarios para características que usan eventos de archivo. Reemplaza
<BUCKET>con el nombre del bucket S3.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManagedFileEventsSetupStatement", "Effect": "Allow", "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:CreateTopic", "sns:TagResource", "sns:Publish", "sns:Subscribe", "sqs:CreateQueue", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:SetQueueAttributes", "sqs:TagQueue", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue" ], "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsListStatement", "Effect": "Allow", "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsTeardownStatement", "Effect": "Allow", "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] } ] }Adjunte las políticas IAM al rol IAM.
En la pestaña Permisos del rol, adjunte las políticas de IAM que ha creado recientemente.
Paso 2: Proporcionar a Azure Databricks los detalles del rol de IAM
En Azure Databricks, inicie sesión en un área de trabajo vinculada al metastore del catálogo de Unity.
Debe tener el privilegio
CREATE STORAGE CREDENTIAL. Los roles de administrador de metastore y administrador de cuentas incluyen este privilegio.Haga clic en
Catálogo.
Haga clic en el botón Datos >externos, vaya a la pestaña Credenciales y seleccione Crear credencial.
Seleccione un Tipo de credencial de rol de AWS IAM.
Introduzca un nombre para la credencial, el ARN del rol de IAM que autoriza a Unity Catalog a acceder a la ubicación de almacenamiento en su inquilino de nube y un comentario opcional.
(Opcional) Si quiere que los usuarios tengan acceso de solo lectura a las ubicaciones externas que usan esta credencial de almacenamiento, en Opciones avanzadas seleccione Solo lectura. Para obtener más información, consulte Marcar una credencial de almacenamiento como de solo lectura.
Nota:
Dado que Azure Databricks solo proporciona acceso de solo lectura a cubos de S3 mediante credenciales de almacenamiento, no es necesario establecer esta opción.
Haga clic en Crear.
En el cuadro de diálogo Credencial de almacenamiento creada, copie el identificador externo.
Haga clic en Listo.
(Opcional) Enlace la credencial de almacenamiento a áreas de trabajo específicas.
De forma predeterminada, cualquier usuario con privilegios puede usar la credencial de almacenamiento en cualquier área de trabajo asociada al metastore. Si desea permitir el acceso solo desde áreas de trabajo específicas, vaya a la pestaña Áreas de trabajo y asigne áreas de trabajo. Consulte (Opcional) Asignación de la credencial de almacenamiento a áreas de trabajo específicas.
También puede crear una credencial de almacenamiento mediante el uso del proveedor Databricks Terraform y databricks_storage_credential.
Paso 3: Actualice la política de relación de confianza del rol IAM
En AWS, modifique la directiva de relación de confianza para agregar el identificador externo de las credenciales de almacenamiento y haga que se asuma automáticamente.
Regrese al rol de IAM que ha guardado y vaya a la pestaña Relaciones de confianza.
Edite la directiva de relación de confianza de la siguiente manera:
Agregue el siguiente ARN a la declaración "Permitir". Reemplace
<YOUR-AWS-ACCOUNT-ID>y<THIS-ROLE-NAME>por sus valores reales de identificador de cuenta y rol de IAM."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"En la declaración
"sts:AssumeRole", actualice el ID externo del marcador de posición al ID externo de su credencial de almacenamiento que copió en el paso anterior."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"Su política debería tener ahora el siguiente aspecto, con el texto de sustitución actualizado para utilizar el ID externo, el ID de cuenta y los valores de rol de IAM de su credencial de almacenamiento:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q", "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>" } } } ] }
Paso 4: Validar la credencial de almacenamiento
Después de realizar los cambios en la directiva de confianza de roles de IAM en Paso 3: Actualizar la directiva de relación de confianza de roles de IAM, compruebe que el rol de IAM está configurado correctamente para usarse como credencial de almacenamiento.
Nota:
Para validar la configuración, debe ser el propietario de credenciales de almacenamiento, un administrador de metastore o tener CREATE EXTERNAL LOCATION permisos en la credencial de almacenamiento.
En Azure Databricks, inicie sesión en un área de trabajo vinculada al metastore.
Haga clic en
Catálogo.
Haga clic en el botón Datos >externos y vaya a la pestaña Credenciales.
Como alternativa, puede hacer clic en el
icono del engranaje en la parte superior del panel del Catálogo y seleccionar Credenciales.
Seleccione la credencial de almacenamiento que desea validar.
Haga clic en
.Si se produce un error en alguna de las comprobaciones, vuelva al Paso 3: Actualice la directiva de relación de confianza del rol de IAM y revise la directiva de confianza del rol de IAM para configurarlas correctamente.
Cuando se valida la credencial de almacenamiento, puede usarla para crear una ubicación externa.
Política de aplicación de roles autoasumidos
El 30 de junio de 2023, AWS actualizó su política de confianza de roles IAM para requerir que los roles IAM se autoconfíen explícitamente para llamadas STS:AssumeRole. Como resultado, Databricks requiere que los roles de IAM de AWS para las credenciales de almacenamiento sean autoasumidos. Para obtener más información, consulte esta entrada de blog de la comunidad.
El 20 de enero de 2025, Databricks comenzó a bloquear el uso de credenciales de almacenamiento existentes con roles IAM no autoasumidos. Esta prohibición puede romper las cargas de trabajo y los trabajos que se ejecutan utilizando credenciales no autoasumidas.
Para comprobar si un rol de AWS IAM para una credencial de almacenamiento es autoasumido, sigue las instrucciones del paso 4: Validar la credencial de almacenamiento. Si la comprobación Autoasumir rol falla, vuelva a visitar Paso 3: Actualizar la política de relación de confianza del rol de IAM y reconfigure la política de confianza del rol de IAM para que confíe en sí mismo.
Si tiene varias credenciales de almacenamiento en un metastore que desea comprobar, use el cuaderno siguiente para comprobar las funcionalidades que asumen automáticamente todas las credenciales de almacenamiento de su metastore:
Cuaderno de verificación de credenciales de autoasunción de almacenamiento
(Opcional) Asignación de la credencial de almacenamiento a áreas de trabajo específicas
De forma predeterminada, se puede acceder a una credencial de almacenamiento desde todas las áreas de trabajo del metastore. Esto significa que si a un usuario se le ha concedido un privilegio (por CREATE EXTERNAL LOCATIONejemplo, ) en esa credencial de almacenamiento, puede ejercer ese privilegio desde cualquier área de trabajo asociada al metastore. Si usa áreas de trabajo para aislar el acceso a datos de usuario, es posible que desee permitir el acceso a una credencial de almacenamiento solo desde áreas de trabajo específicas. Esta característica se conoce como enlace del área de trabajo o aislamiento de credenciales de almacenamiento. Para obtener instrucciones, consulte (Opcional) Asignación de una credencial de almacenamiento a áreas de trabajo específicas.
Limitaciones
- En los espacios de trabajo que utilizan control de salida sin servidor, el acceso multiplataforma a los buckets de AWS S3 debe configurarse mediante la API de políticas de red.
Pasos siguientes
Vea, actualice, elimine y conceda a otros usuarios permiso para usar una credencial de almacenamiento. Consulte Administración de credenciales de almacenamiento.
Defina ubicaciones externas mediante una credencial de almacenamiento. Consulte Creación de una ubicación externa para conectar el almacenamiento en la nube a Azure Databricks.