mirror of
https://github.com/datahub-project/datahub.git
synced 2025-06-27 05:03:31 +00:00
242 lines
11 KiB
Markdown
242 lines
11 KiB
Markdown
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
|
|
# Onboarding Users to DataHub
|
|
|
|
New user accounts can be provisioned on DataHub in 3 ways:
|
|
|
|
1. Shared Invite Links
|
|
2. Single Sign-On using [OpenID Connect](https://www.google.com/search?q=openid+connect&oq=openid+connect&aqs=chrome.0.0i131i433i512j0i512l4j69i60l2j69i61.1468j0j7&sourceid=chrome&ie=UTF-8)
|
|
3. Static Credential Configuration File (Self-Hosted Only)
|
|
|
|
The first option is the easiest to get started with. The second is recommended for deploying DataHub in production. The third should
|
|
be reserved for special circumstances where access must be closely monitored and controlled, and is only relevant for Self-Hosted instances.
|
|
|
|
# Shared Invite Links
|
|
|
|
### Generating an Invite Link
|
|
|
|
If you have the `Manage User Credentials` [Platform Privilege](../../authorization/access-policies-guide.md), you can invite new users to DataHub by sharing an invite link.
|
|
|
|
To do so, navigate to the **Users & Groups** section inside of Settings page. Here you can generate a shareable invite link by clicking the `Invite Users` button. If you
|
|
do not have the correct privileges to invite users, this button will be disabled.
|
|
|
|
<p align="center">
|
|
<img width="100%" src="https://raw.githubusercontent.com/datahub-project/static-assets/master/imgs/invite-users-button.png"/>
|
|
</p>
|
|
|
|
To invite new users, simply share the link with others inside your organization.
|
|
|
|
<p align="center">
|
|
<img width="70%" src="https://raw.githubusercontent.com/datahub-project/static-assets/master/imgs/invite-users-popup.png"/>
|
|
</p>
|
|
|
|
When a new user visits the link, they will be directed to a sign up screen where they can create their DataHub account.
|
|
|
|
### Resetting User Passwords
|
|
|
|
To reset a user's password, navigate to the Users & Groups tab, find the user who needs their password reset,
|
|
and click **Reset user password** inside the menu dropdown on the right hand side. Note that a user must have the
|
|
`Manage User Credentials` [Platform Privilege](../../authorization/access-policies-guide.md) in order to reset passwords.
|
|
|
|
<p align="center">
|
|
<img width="100%" src="https://raw.githubusercontent.com/datahub-project/static-assets/master/imgs/reset-user-password-button.png"/>
|
|
</p>
|
|
|
|
To reset the password, simply share the password reset link with the user who needs to change their password. Password reset links expire after 24 hours.
|
|
|
|
<p align="center">
|
|
<img width="70%" src="https://raw.githubusercontent.com/datahub-project/static-assets/master/imgs/reset-user-password-popup.png"/>
|
|
</p>
|
|
|
|
# Configuring Single Sign-On with OpenID Connect
|
|
|
|
Setting up Single Sign-On via OpenID Connect enables your organization's users to login to DataHub via a central Identity Provider such as
|
|
|
|
- Azure AD
|
|
- Okta
|
|
- Keycloak
|
|
- Ping!
|
|
- Google Identity
|
|
|
|
and many more.
|
|
|
|
This option is strongly recommended for production deployments of DataHub.
|
|
|
|
### DataHub Cloud
|
|
|
|
Single Sign-On can be configured and enabled by navigating to **Settings** > **SSO** > **OIDC**. Note
|
|
that a user must have the **Manage Platform Settings** [Platform Privilege](../../authorization/access-policies-guide.md)
|
|
in order to configure SSO settings.
|
|
|
|
To complete the integration, you'll need the following:
|
|
|
|
1. **Client ID** - A unique identifier for your application with the identity provider
|
|
2. **Client Secret** - A shared secret to use for exchange between you and your identity provider
|
|
3. **Discovery URL** - A URL where the OpenID settings for your identity provider can be discovered.
|
|
|
|
These values can be obtained from your Identity Provider by following Step 1 on the [OpenID Connect Authentication](sso/configure-oidc-react.md)) Guide.
|
|
|
|
### Self-Hosted DataHub
|
|
|
|
For information about configuring Self-Hosted DataHub to use OpenID Connect (OIDC) to
|
|
perform authentication, check out [OIDC Authentication](sso/configure-oidc-react.md).
|
|
|
|
> **A note about user URNs**: User URNs are unique identifiers for users on DataHub. The username received from an Identity Provider
|
|
> when a user logs into DataHub via OIDC is used to construct a unique identifier for the user on DataHub. The urn is computed as:
|
|
> `urn:li:corpuser:<extracted-username>`
|
|
>
|
|
> By default, the email address will be the username extracted from the Identity Provider. For information about customizing
|
|
> the claim should be treated as the username in Datahub, check out the [OIDC Authentication](sso/configure-oidc-react.md) documentation.
|
|
|
|
# Static Credential Configuration File (Self-Hosted Only)
|
|
|
|
User credentials can be managed via a [JaaS Authentication](./jaas.md) configuration file containing
|
|
static username and password combinations. By default, the credentials for the root 'datahub' users are configured
|
|
using this mechanism. It is highly recommended that admins change or remove the default credentials for this user
|
|
|
|
## Adding new users using a user.props file
|
|
|
|
:::NOTE
|
|
Adding users via the `user.props` will require disabling existence checks on GMS using the `METADATA_SERVICE_AUTH_ENFORCE_EXISTENCE_ENABLED=false` environment variable or using the API to enable the user prior to login.
|
|
The directions below demonstrate using the API to enable the user.
|
|
:::
|
|
|
|
To define a set of username / password combinations that should be allowed to log in to DataHub (in addition to the root 'datahub' user),
|
|
create a new file called `user.props` at the file path `${HOME}/.datahub/plugins/frontend/auth/user.props` within the `datahub-frontend-react` container
|
|
or pod.
|
|
|
|
This file should contain username:password specifications, with one on each line. For example, to create 2 new users,
|
|
with usernames "janesmith" and "johndoe", we would define the following file:
|
|
|
|
```
|
|
// custom user.props
|
|
janesmith:janespassword
|
|
johndoe:johnspassword
|
|
```
|
|
|
|
In order to enable the user access with the credential defined in `user.props`, set the `status` aspect on the user with an Admin user. This can be done using an API call or via the [OpenAPI UI interface](/docs/api/openapi/openapi-usage-guide.md).
|
|
|
|
<Tabs>
|
|
<TabItem value="openapi" label="OpenAPI" default>
|
|
|
|
Example enabling login for the `janesmith` user from the example above. Make sure to update the example with your access token.
|
|
|
|
```shell
|
|
curl -X 'POST' \
|
|
'http://localhost:9002/openapi/v3/entity/corpuser/urn%3Ali%3Acorpuser%3Ajanesmith/status?async=false&systemMetadata=false&createIfEntityNotExists=false&createIfNotExists=true' \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-H 'Authorization: Bearer <access token>' \
|
|
-d '{
|
|
"value": {
|
|
"removed": false
|
|
}
|
|
}'
|
|
```
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
Once you've saved the file, simply start the DataHub containers & navigate to `http://localhost:9002/login`
|
|
to verify that your new credentials work.
|
|
|
|
To change or remove existing login credentials, edit and save the `user.props` file. Then restart DataHub containers.
|
|
|
|
If you want to customize the location of the `user.props` file, or if you're deploying DataHub via Helm, proceed to Step 2.
|
|
|
|
### (Advanced) Mount custom user.props file to container
|
|
|
|
This step is only required when mounting custom credentials into a Kubernetes pod (e.g. Helm) **or** if you want to change
|
|
the default filesystem location from which DataHub mounts a custom `user.props` file (`${HOME}/.datahub/plugins/frontend/auth/user.props)`.
|
|
|
|
If you are deploying with `datahub docker quickstart`, or running using Docker Compose, you can most likely skip this step.
|
|
|
|
#### Docker Compose
|
|
|
|
You'll need to modify the `docker-compose.yml` file to mount a container volume mapping your custom user.props to the standard location inside the container
|
|
(`/etc/datahub/plugins/frontend/auth/user.props`).
|
|
|
|
For example, to mount a user.props file that is stored on my local filesystem at `/tmp/datahub/user.props`, we'd modify the YAML for the
|
|
`datahub-web-react` config to look like the following:
|
|
|
|
```aidl
|
|
datahub-frontend-react:
|
|
build:
|
|
context: ../
|
|
dockerfile: docker/datahub-frontend/Dockerfile
|
|
image: acryldata/datahub-frontend-react:${DATAHUB_VERSION:-head}
|
|
.....
|
|
# The new stuff
|
|
volumes:
|
|
- ${HOME}/.datahub/plugins:/etc/datahub/plugins
|
|
- /tmp/datahub:/etc/datahub/plugins/frontend/auth
|
|
```
|
|
|
|
Once you've made this change, restarting DataHub enable authentication for the configured users.
|
|
|
|
#### Helm
|
|
|
|
You'll need to create a Kubernetes secret, then mount the file as a volume to the `datahub-frontend` pod.
|
|
|
|
First, create a secret from your local `user.props` file
|
|
|
|
```shell
|
|
kubectl create secret generic datahub-users-secret --from-file=user.props=./<path-to-your-user.props>
|
|
```
|
|
|
|
Then, configure your `values.yaml` to add the volume to the `datahub-frontend` container.
|
|
|
|
```YAML
|
|
datahub-frontend:
|
|
...
|
|
extraVolumes:
|
|
- name: datahub-users
|
|
secret:
|
|
defaultMode: 0444
|
|
secretName: datahub-users-secret
|
|
extraVolumeMounts:
|
|
- name: datahub-users
|
|
mountPath: /etc/datahub/plugins/frontend/auth/user.props
|
|
subPath: user.props
|
|
```
|
|
|
|
Note that if you update the secret you will need to restart the `datahub-frontend` pods so the changes are reflected. To update the secret in-place you can run something like this.
|
|
|
|
```shell
|
|
kubectl create secret generic datahub-users-secret --from-file=user.props=./<path-to-your-user.props> -o yaml --dry-run=client | kubectl apply -f -
|
|
```
|
|
|
|
> A note on user URNs: User URNs are unique identifiers for users of DataHub. The usernames defined in the `user.props` file will be used to generate the DataHub user "urn", which uniquely identifies
|
|
> the user on DataHub. The urn is computed as `urn:li:corpuser:{username}`, where "username is defined inside your user.props file."
|
|
|
|
## Changing the default 'datahub' user credentials (Recommended)
|
|
|
|
Please refer to [Changing the default user credentials](../changing-default-credentials.md).
|
|
|
|
## Caveats
|
|
|
|
### Adding User Details
|
|
|
|
If you add a new username / password to the `user.props` file, no other information about the user will exist
|
|
about the user in DataHub (full name, email, bio, etc). This means that you will not be able to search to find the user.
|
|
|
|
In order for the user to become searchable, simply navigate to the new user's profile page (top-right corner) and click
|
|
**Edit Profile**. Add some details like a display name, an email, and more. Then click **Save**. Now you should be able
|
|
to find the user via search.
|
|
|
|
> You can also use our Python Emitter SDK to produce custom information about the new user via the CorpUser metadata entity.
|
|
|
|
For a more comprehensive overview of how users & groups are managed within DataHub, check out [this video](https://www.youtube.com/watch?v=8Osw6p9vDYY).
|
|
|
|
## FAQ
|
|
|
|
1. Can I enable OIDC and username / password (JaaS) authentication at the same time?
|
|
|
|
YES! If you have not explicitly disabled JaaS via an environment variable on the datahub-frontend container (AUTH_JAAS_ENABLED),
|
|
then you can always access the standard login flow at `http://your-datahub-url.com/login`.
|
|
|
|
## Feedback / Questions / Concerns
|
|
|
|
We want to hear from you! For any inquiries, including Feedback, Questions, or Concerns, reach out on Slack!
|