This topic describes how to configure Dremio for Single Sign On (SSO) Authentication with either Azure Active Directory or another Identity Provider using OpenID.
Enterprise Edition only
Introduced in Dremio 3.3
To use Azure Active Directory or OpenID, Dremio’s webserver must have web server encrpytion enabled. See the Web Server Encryption section in Configuring Wire Encryption for more information.
To setup and configure Azure AD,
App registration
for the Azure AD instance with the your name and the account type.
https://{dremio.host}:9047/sso
), and press Save.
Note that the URI is specified when you configure Dremio.
Directory.Read.all
, click on the Directory.Read.all
permission box
and click Add permission. This permission is required for Dremio to read from the Azure AD. Ensure that this permission status is green for Dremio to read from the Azure AD.
When configuring Dremio for Azure directory, you modify the dremio.conf and azuread.json files. These modified files must be copied to the /conf directory on all coordinator nodes.
Important
To enable Azure Active Directory support, all coordinator nodes must be configured prior to deploying the Dremio cluster.
To configure Dremio for Azure Active Directory:
services: {
coordinator.enabled: true,
coordinator.web.auth.type: "azuread",
coordinator.web.auth.config: "azuread.json"
}
{
"oAuthConfig": {
"clientId": "<clientId>",
"clientSecret": "<clientSecret>",
"redirectUrl": "https://<dremio.host>:9047/sso",
"authorityUrl": "https://login.microsoftonline.com/<directory.id>/v2.0",
"scope": "openid profile offline_access",
"jwtClaims": {
"userName": "preferred_username"
}
}
}
clientId
: It appears on the Overview screen of your application. This property is also called application ID. A clientId
is applicable to the context where you acquire a token using one of the OAuth flows that Azure AD supports. The application ID is same for single application object that corresponds to an application.clientSecret
: It is the secret that was created in the Setting Up Azure AD section.redirectUrl
: It is the redirect URI that was created in the Setting Up Azure AD section.directory.id
: It appears on the Overview screen of your application. This property is also called tenant ID.dremio.conf
and azuread.json
files to every coordinator node in the Dremio cluster.Important
The LDAP configuration in the
dremio.conf
andazuread.json
files must exist and match on all coordinator nodes.
Dremio supports using Azure’s Managed Storage Identities feature to retrieve the secret when running inside Azure. This feature can be used if you want to avoid storing the secret in plain text.
To setup Azure’s Managed Storage Identities:
Get
permissions for Secrets
.clientSecret
to the following URI:
...
"clientSecret": "azure-vault+https://{keyvault.name}.vault.azure.net/#{secret.name}",
...
Note: This special URI tells Dremio to access the Key Vault located at https://{keyvault.name}.vault.azure.net
and load the secret named {secret.name}
. The KeyVault value is on the Overview page under DNS Name.
To configure Single Sign On with an Identity Provide over OpenID, perform the following steps:
services.coordinator.web.auth.type: "oauth"
services.coordinator.web.auth.config: "/path/to/oauth.json"
{
"clientId": "clientId",
"clientSecret": "clientSecret",
"redirectUrl": "http://dremioHost:9047/sso",
"authorityUrl": "authorityUrl",
"scope": "openid profile email",
"jwtClaims": {
“userName": "email"
},
"parameters": [
{"name": "access_type", "value": "offline"},
...
]
}
The following table describes the oauth.json file properties.
Parameter | Description |
---|---|
clientId | It is based on the OpenID provider. |
clientSecret | It is based on the OpenID provider. |
redirectUrl | The URL where Dremio is hosted. The URL must match the redirect url set in the OpenID Provider. |
authorityUrl | The location where Dremio can find the OpenID discovery document. For example, Google’s location is `https://accounts.google.com/.well-known/openid-configuration` and the authorityUrl therefore to use is `https://accounts.google.com`, the base location of the well-known directory. |
scope | It is based on the OpenID provider. |
jwtClaims | Maps fields from the JWT token to fields Dremio requires. The only field currently required is userName, which you should set to the field in JWT that contains the user’s username. For example, this can be `email` if you want the usernames in Dremio to be the user’s email address. |
parameters | Optional - any additional parameters required by the OpenID providers. |
When SSO is configured, you are redirected to Azure to login using SSO. Dremio also uses Azure Active Directory for directory services and to look up users and groups.
When using a SSO configuration, you must use personal access tokens (PATs) as the SSO password. See Personal Access Tokens for information on enabling PATs.
$ ./dremio-admin backup -u se3@dremioqa.onmicrosoft.com -d /tmp
password:
Backup created at /tmp/dremio_backup_2019-07-17_23.08, dremio tables 32, uploaded files 1
If you use your SSO password instead of your PAT as the password, you will see the following:
$ ./dremio-admin backup -u se3@dremioqa.onmicrosoft.com -d /tmp
password:
Failed to create backup at /tmp:java.io.IOException: Status 500 (Internal Server Error):
Something went wrong (more info: Cannot authenticate users when using Azure AD)
Important
When deleting users from SSO, ensure that all Personal Access Tokens (PATs) are also deleted.