Acesso ao S3 com passagem de credencial IAM com federação SAML 2.0 (legado)
Essa documentação foi descontinuada e pode não estar atualizada.
A passagem de credenciais está obsoleta a partir do Databricks Runtime 15.0 e será removida em versões futuras do Databricks Runtime. A Databricks recomenda que o senhor atualize para o Unity Catalog. Unity Catalog simplifica a segurança e a governança de seus dados, fornecendo um local central para administrar e auditar o acesso aos dados em vários espaços de trabalho em seu site account. Consulte O que é o Unity Catalog?
O AWS oferece suporte à federação de identidade SAML 2.0 para permitir o logon único no AWS Management Console e nas APIs do AWS. Databricks O espaço de trabalho configurado com logon único pode usar a federação AWS IAM para manter o mapeamento de usuários para a função IAM em seu provedor de identidade (IdP), em vez de usar o Databricks SCIM. Isso permite que o senhor centralize o acesso aos dados no seu IdP e que esses direitos sejam transferidos diretamente para o clustering Databricks.
A passagem de credenciais IAM com a federação SAML 2.0 só pode ser configurada quando o login unificado estiver desativado. A Databricks recomenda que o senhor atualize para o Unity Catalog, consulte O que é o Unity Catalog? Se o seu account tiver sido criado após 21 de junho de 2023 ou se o senhor não tiver configurado o SSO antes de 12 de dezembro de 2024 e precisar da passagem de credenciais IAM com a federação SAML 2.0, entre em contato com a equipe Databricks account .
O diagrama a seguir ilustra o fluxo de trabalho da federação:
- Configure uma relação de confiança entre o IdP e a conta AWS para que o IdP controle as funções que os usuários podem assumir.
- Os usuários fazem login na Databricks por meio do SAML SSO e o direito às funções é passado pelo IdP.
- Databricks chama o serviço de tokens de segurança (STS) AWS e assume as funções do usuário, passando a resposta SAML e obtendo o tokens temporário.
- Quando um usuário acessa S3 de um clustering Databricks, o tempo de execução Databricks usa o tokens temporário para que o usuário realize o acesso de forma automática e segura.
A federação para a passagem de credenciais IAM sempre mapeia as funções para os usuários em SAML quando a opção Allow IAM role entitlement auto sync está ativada. Ele substituirá todas as funções anteriores definidas por meio da API do SCIM.
Requisitos
-
SAML logon único configurado em seu site Databricks workspace.
-
Acesso de administrador do AWS a:
- IAM função e políticas no AWS account da implantação do Databricks.
- AWS account do balde S3.
-
Administrador do provedor de identidade (IdP) para configurar seu IdP para transmitir funções do AWS para a Databricks.
-
Um administrador de Databricks workspace para incluir funções de AWS na declaração de SAML.
Etapa 1: obtenha o URL SAML da Databricks
-
Vá para a página de configurações.
-
Clique em Authentication (Autenticação ) tab.
-
Copie o URL SAML da Databricks.
Etapa 2: Faça o download dos metadados do provedor de identidade
As passos dentro do console do provedor de identidade variam um pouco para cada provedor de identidade. Consulte Integração de provedores de soluções SAML de terceiros com a AWS para obter exemplos com seu provedor de identidade.
-
No console de administração do provedor de identidade, localize o aplicativo Databricks para logon único.
-
Faça o download dos metadados SAML.
Etapa 3: configurar o provedor de identidade
- No console da AWS, acesse o serviço IAM .
- Clique em Identity Providers (Provedores de identidade ) tab na barra lateral.
- Clique em Criar provedor .
- Em Provider Type (Tipo de provedor), selecione SAML .
- Em Nome do provedor, insira um nome.
- Em Metadata Document (Documento de metadados ), clique em Choose File (Escolher arquivo ) e navegue até o arquivo que contém o documento de metadados que o senhor baixou acima.
- Clique em Próxima passo e depois em Criar .
Etapa 4: Configurar o IAM role para federação
Somente as funções usadas para acesso a dados devem ser usadas para federação com Databricks. Não recomendamos permitir funções normalmente usadas para acesso ao console do AWS, pois elas podem ter mais privilégios do que o necessário.
-
No console da AWS, acesse o serviço IAM .
-
Clique na guia Funções na barra lateral.
-
Clique em Criar função .
- Em Select type of trusted entity (Selecionar tipo de entidade confiável ), selecione SAML 2.0 federation (Federação SAML 2.0 ).
- No provedor SAML, selecione o nome criado na passo 3.
- Selecione Permitir somente acesso programático .
- Em Attribute (Atributo), selecione SAML .
- Em Valor, cole a URL SAML do Databricks que você copiou na passo 1.
- Clique em Avançar: Permissões , Avançar: Tags e Avançar: Revisão .
- No campo Nome da função, digite um nome de função.
- Clique em Criar papel . A lista de funções é exibida.
-
Adicione uma política embutida à função. Essa política concede acesso ao bucket S3.
-
Em Permissions (Permissões) tab, clique em
.
-
Clique no botão JSON tab. Copie essa política e defina
<s3-bucket-name>
como o nome do seu bucket.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>/*"]
}
]
} -
Clique em Revisar política .
-
No campo Nome, digite um nome de política.
-
Clique em Criar política .
-
-
No Trusted Relationships (Relacionamentos confiáveis ) tab, o senhor deve ver algo semelhante a:
-
Clique no botão Editar relação de confiança . O documento de política de confiança resultante do IAM deve ser semelhante ao seguinte:
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<accountID>:saml-provider/<IdP-name>"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://xxxxxx.cloud.databricks.com/saml/consume"
}
}
}
]
}
Etapa 5: Configure o provedor de identidade para passar atributos para o Databricks
Os seguintes atributos devem ser passados para Databricks na resposta SAML via SSO para que Databricks passe as funções para o clustering:
https://aws.amazon.com/SAML/Attributes/Role
https://aws.amazon.com/SAML/Attributes/RoleSessionName
Esses atributos são a lista de ARNs de função e o nome de usuário que corresponde ao login de logon único. Os mapeamentos de funções são atualizados quando um usuário faz login no site Databricks workspace.
Se o direito do usuário à função IAM for baseado na associação ao grupo AD/LDAP, o senhor deverá configurar o mapeamento desse grupo para a função de acordo com o seu IdP.
Cada provedor de identidade difere na forma como o senhor adiciona atributos para passar pelo SAML. A seção a seguir mostra um exemplo com o Okta. Consulte Integração de provedores de soluções SAML de terceiros com o AWS para obter exemplos com seu provedor de identidade.
Exemplo de Okta
-
No Console de administração do Okta, em Aplicativos, selecione seu aplicativo Single Sign On para Databricks.
-
Clique em Edit (Editar ) em SAML Settings (Configurações de ) e clique em Next (Avançar) para Configurar SAML tab.
-
Em Declarações de atributos, adicione os seguintes atributos:
- Nome:
https://aws.amazon.com/SAML/Attributes/RoleSessionName
, Formato do nome: Referência de URI, Valor:user.login
- Nome:
-
Para gerenciar as funções facilmente usando grupos, crie grupos correspondentes à sua função IAM, por exemplo,
GroupA
eGroupB
, e adicione os usuários a esses grupos. -
Você pode usar as expressões do Okta para combinar grupos e funções da seguinte forma:
-
Nome:
https://aws.amazon.com/SAML/Attributes/Role
, Formato do nome:URI Reference
, Valor:Arrays.flatten(isMemberOfGroupName("GroupA") ? "arn:aws:iam::xxx:role/role-a,arn:aws:iam::xxx:saml-provider/okta-databricks" : {}, isMemberOfGroupName("GroupB") ? "arn:aws:iam::xxx:role/role-b,arn:aws:iam::xxx:saml-provider/okta-databricks" : {})
Deve ter a seguinte aparência:
Somente os usuários de um determinado grupo teriam permissão para usar o site correspondente IAM role.
-
-
Use gerenciar People para adicionar usuários ao grupo.
-
Use gerenciar Apps para atribuir o grupo ao aplicativo SSO para permitir que os usuários acessem log in e Databricks.
Para adicionar funções adicionais, siga as passos acima, mapeando um grupo Okta para uma função federada. Para ter funções em diferentes account da AWS, adicione o aplicativo SSO como um novo provedor de identidade IAM a cada account adicional da AWS que terá funções federadas para Databricks.
Etapa 6: opcionalmente, configure o Databricks para sincronizar os mapeamentos de função do SAML para o SCIM
Execute esta etapa se o senhor quiser usar a passagem de credencial IAM para o Job ou JDBC. Caso contrário, o senhor deve definir os mapeamentos IAM role usando o SCIM API.
-
Vá para a página de configurações.
-
Clique em Authentication (Autenticação ) tab.
-
Selecione Allow IAM role entitlement auto sync (Permitir sincronização automática de direitos de função do IAM ).
Melhores práticas
Para obter a melhor experiência, recomendamos que o senhor defina a duração máxima da sessão no site IAM role entre 4 e 8 horas. Isso evita que os usuários tenham que se autenticar repetidamente para buscar novos tokens ou que longas consultas falhem devido a tokens expirados. Para definir a duração:
-
No console AWS, clique no IAM role que você configurou na Etapa 4: Configurar o IAM role para federação.
-
Na propriedade Maximum CLI/API session duração , clique em Edit .
-
Selecione a duração e clique em Save changes (Salvar alterações) .
Usar a passagem de credenciais do IAM com a federação
Siga as instruções em Launch an IAM credential passthrough clustering and do not add an instance profile. Para usar o IAM passthrough com federação para conexões de trabalho ou JDBC, siga as instruções em Set up a meta instance profile.
Segurança
É seguro compartilhar alta simultaneidade IAM credenciais de clustering passthrough com outros usuários. Você vai estarão isolados um do outro e não poderão ler ou usar as credenciais um do outro.
Solução de problemas
Configurações incorretas são uma fonte comum de erros ao configurar a passagem de credenciais. O cabeçalho X-Databricks-PassThrough-Error é retornado com os cabeçalhos de resposta de logon para ajudar a identificar a origem desses erros. Os valores possíveis são:
- ValidationError : A configuração das funções no provedor de identidade não satisfaz as restrições especificadas pelo serviço AWS. Uma causa comum desse erro é que o nome da função e o nome do provedor de identidade estão na ordem errada.
- InvalidIdentityToken : O provedor de identidade enviado é inválido. Uma causa comum desse erro é que os metadados do provedor de identidade não estão definidos corretamente no serviço AWS IAM.
- AccessDenied : A validação da função falhou. Uma causa comum desse erro é o fato de o provedor de identidade não ter sido adicionado às relações de confiança da função no serviço AWS IAM.
- Atributo de nome de função malformado : a configuração da função no provedor de identidade está no formato errado.
Consulte a documentação do seu navegador para obter instruções sobre como acessar os cabeçalhos de resposta.
Limitações conhecidas
Os seguintes recursos não são compatíveis com a federação IAM:
-
%fs
(em vez disso, use o comando dbutils.fs equivalente). -
Os seguintes métodos nos objetos SparkContext (
sc
) e SparkSession (spark
):- Métodos obsoletos.
- Métodos como
addFile()
eaddJar()
que permitiriam que usuários não administradores chamassem o código Scala. - Qualquer método que acesse um sistema de arquivos que não seja o S3.
- APIs antigas do Hadoop (
hadoopFile()
ehadoopRDD()
). - transmissão APIs, uma vez que as credenciais passadas expirariam enquanto a transmissão ainda estivesse em andamento.
-
DBFS As montagens (
/dbfs
) estão disponíveis somente em Databricks Runtime 7.3 LTS e acima. Os pontos de montagem com passagem de credencial configurada não são suportados por esse caminho. -
Biblioteca em todo o cluster que requer permissão de um cluster instance profilepara download. Somente as bibliotecas com caminhos DBFS são compatíveis.
-
Databricks Connect O clustering de alta simultaneidade está disponível somente em Databricks Runtime 7.3 LTS e acima.