mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-23 20:47:01 +01:00
Docs updates (#2961)
This commit is contained in:
parent
2e3b09ec8a
commit
3cbda02aa8
|
@ -185,11 +185,12 @@ moment.
|
||||||
|
|
||||||
An example:
|
An example:
|
||||||
|
|
||||||
> Alice should only be able to modify a user's password if that user is a member of the students
|
Alice should only be able to modify a user's password if that user is a member of the students group.
|
||||||
> group.
|
|
||||||
|
|
||||||
**Note:** `modify` does not imply `read` of the attribute. Care should be taken that we don't
|
> [!NOTE]
|
||||||
disclose the current value in any error messages if the operation fails.
|
>
|
||||||
|
> `modify` does not imply `read` of the attribute. Care should be taken that we don't
|
||||||
|
> disclose the current value in any error messages if the operation fails.
|
||||||
|
|
||||||
## Targeting Requirements
|
## Targeting Requirements
|
||||||
|
|
||||||
|
@ -332,7 +333,9 @@ A complete schema would be:
|
||||||
| access_control_modify | | `[acp_modify_removedattr, acp_modify_presentattr, acp_modify_class]` |
|
| access_control_modify | | `[acp_modify_removedattr, acp_modify_presentattr, acp_modify_class]` |
|
||||||
| access_control_create | | `[acp_create_class, acp_create_attr]` |
|
| access_control_create | | `[acp_create_class, acp_create_attr]` |
|
||||||
|
|
||||||
**Important**: empty sets really mean empty sets!
|
> [!NOTE]
|
||||||
|
>
|
||||||
|
> empty sets really mean empty sets!
|
||||||
|
|
||||||
The ACP code will assert that both `access_control_profile` _and_ one of the
|
The ACP code will assert that both `access_control_profile` _and_ one of the
|
||||||
`search/delete/modify/create` classes exists on an ACP. An important factor of this design is now
|
`search/delete/modify/create` classes exists on an ACP. An important factor of this design is now
|
||||||
|
@ -411,10 +414,12 @@ However, a possible issue is that Option #2 means that a delete request of
|
||||||
This is also a concern for modification, where the modification attempt may or may not fail
|
This is also a concern for modification, where the modification attempt may or may not fail
|
||||||
depending on the entries and if you can/can't see them.
|
depending on the entries and if you can/can't see them.
|
||||||
|
|
||||||
**IDEA:** You can only `delete`/`modify` within the read scope you have. If you can't read it (based
|
> [!NOTE]
|
||||||
on the read rules of `search`), you can't `delete` it. This is in addition to the filter rules of
|
>
|
||||||
the `delete` applying as well. So performing a `delete` of `Pres(class)`, will only delete in your
|
> You can only `delete`/`modify` within the read scope you have. If you can't read it (based
|
||||||
`read` scope and will never disclose if you are denied access.
|
> on the read rules of `search`), you can't `delete` it. This is in addition to the filter rules of
|
||||||
|
> the `delete` applying as well. So performing a `delete` of `Pres(class)`, will only delete in your
|
||||||
|
> `read` scope and will never disclose if you are denied access.
|
||||||
|
|
||||||
<!-- TODO
|
<!-- TODO
|
||||||
@yaleman: This goes back to the commentary on Option #2 and feels icky like SQL's `DELETE FROM <table>` just deleting everything. It's more complex from the client - you have to search for a set of things to delete - then delete them.
|
@yaleman: This goes back to the commentary on Option #2 and feels icky like SQL's `DELETE FROM <table>` just deleting everything. It's more complex from the client - you have to search for a set of things to delete - then delete them.
|
||||||
|
|
|
@ -8,7 +8,7 @@ responses belong to the same enum, the colors are meant to provide additional in
|
||||||
response means that the input was valid and therefore it contains the next step in the identity
|
response means that the input was valid and therefore it contains the next step in the identity
|
||||||
verification flow, while a red response means the input was invalid and the flow terminates there.
|
verification flow, while a red response means the input was invalid and the flow terminates there.
|
||||||
Note that the protocol is completely stateless, so the following diagram is not to be intended as a
|
Note that the protocol is completely stateless, so the following diagram is not to be intended as a
|
||||||
state machine, for the idv state machine go [here](#the-identity-verification-state-machine-idv).
|
state machine, for the idv state machine go [here](#the-identity-verification-state-machine).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
|
@ -328,7 +328,9 @@ KANIDM_BUILD_PROFILE=release_linux cargo build --release --bin kanidmd
|
||||||
|
|
||||||
### Building the Web UI
|
### Building the Web UI
|
||||||
|
|
||||||
**NOTE:** There is a pre-packaged version of the Web UI at `/server/web_ui/pkg/`, which can be used
|
> [!NOTE:]
|
||||||
|
>
|
||||||
|
> There is a pre-packaged version of the Web UI at `/server/web_ui/pkg/`, which can be used
|
||||||
directly. This means you don't need to build the Web UI yourself.
|
directly. This means you don't need to build the Web UI yourself.
|
||||||
|
|
||||||
The Web UI uses Rust WebAssembly rather than Javascript. To build this you need to set up the
|
The Web UI uses Rust WebAssembly rather than Javascript. To build this you need to set up the
|
||||||
|
|
|
@ -4,11 +4,17 @@ There are some cases where you may need to rename the domain. You should have co
|
||||||
initially in the setup, however you may have a situation where a business is changing name, merging
|
initially in the setup, however you may have a situation where a business is changing name, merging
|
||||||
or other needs which may prompt this needing to be changed.
|
or other needs which may prompt this needing to be changed.
|
||||||
|
|
||||||
> **WARNING:** This WILL break ALL u2f/webauthn tokens that have been enrolled, which MAY cause
|
> [!WARNING]
|
||||||
|
>
|
||||||
|
> This WILL break ALL u2f/webauthn tokens that have been enrolled, which MAY cause
|
||||||
> accounts to be locked out and unrecoverable until further action is taken. DO NOT CHANGE the
|
> accounts to be locked out and unrecoverable until further action is taken. DO NOT CHANGE the
|
||||||
> domain name unless REQUIRED and have a plan on how to manage these issues.
|
> domain name unless REQUIRED and have a plan on how to manage these issues.
|
||||||
|
|
||||||
> **WARNING:** This operation can take an extensive amount of time as ALL accounts and groups in the
|
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
>
|
||||||
|
> This operation can take an extensive amount of time as ALL accounts and groups in the
|
||||||
> domain MUST have their Security Principal Names (SPNs) regenerated. This WILL also cause a large
|
> domain MUST have their Security Principal Names (SPNs) regenerated. This WILL also cause a large
|
||||||
> delay in replication once the system is restarted.
|
> delay in replication once the system is restarted.
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,7 @@ kanidm group create 'grafana_users'
|
||||||
Setup the claim-map that will set what role each group will map to in Grafana:
|
Setup the claim-map that will set what role each group will map to in Grafana:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kanidmm oauth2 update-claim-map-join 'grafana' 'grafana_role' array
|
kanidm system oauth2 update-claim-map-join 'grafana' 'grafana_role' array
|
||||||
kanidm system oauth2 update-claim-map 'grafana' 'grafana_role' 'grafana_superadmins' 'GrafanaAdmin'
|
kanidm system oauth2 update-claim-map 'grafana' 'grafana_role' 'grafana_superadmins' 'GrafanaAdmin'
|
||||||
kanidm system oauth2 update-claim-map 'grafana' 'grafana_role' 'grafana_admins' 'Admin'
|
kanidm system oauth2 update-claim-map 'grafana' 'grafana_role' 'grafana_admins' 'Admin'
|
||||||
kanidm system oauth2 update-claim-map 'grafana' 'grafana_role' 'grafana_editors' 'Editor'
|
kanidm system oauth2 update-claim-map 'grafana' 'grafana_role' 'grafana_editors' 'Editor'
|
||||||
|
@ -205,15 +205,19 @@ allow_assign_grafana_admin = true
|
||||||
|
|
||||||
## Vouch Proxy
|
## Vouch Proxy
|
||||||
|
|
||||||
> **WARNING** Vouch proxy requires a unique identifier but does not use the proper scope, "sub". It
|
> [!WARNING]
|
||||||
|
>
|
||||||
|
> Vouch proxy requires a unique identifier but does not use the proper scope, "sub". It
|
||||||
> uses the fields "username" or "email" as primary identifiers instead. As a result, this can cause
|
> uses the fields "username" or "email" as primary identifiers instead. As a result, this can cause
|
||||||
> user or deployment issues, at worst security bypasses. You should avoid Vouch Proxy if possible
|
> user or deployment issues, at worst security bypasses. You should avoid Vouch Proxy if possible
|
||||||
> due to these issues.
|
> due to these issues.
|
||||||
>
|
>
|
||||||
> - <https://github.com/vouch/vouch-proxy/issues/309>
|
> - <https://github.com/vouch/vouch-proxy/issues/309>
|
||||||
> - <https://github.com/vouch/vouch-proxy/issues/310>
|
> - <https://github.com/vouch/vouch-proxy/issues/310>
|
||||||
|
|
||||||
Note: **You need to run at least the version 0.37.0**
|
> [!NOTE]
|
||||||
|
>
|
||||||
|
> You need to run at least version 0.37.0
|
||||||
|
|
||||||
Vouch Proxy supports multiple OAuth and OIDC login providers. To configure it you need to pass:
|
Vouch Proxy supports multiple OAuth and OIDC login providers. To configure it you need to pass:
|
||||||
|
|
||||||
|
|
|
@ -52,13 +52,15 @@ You can also configure some unixd-specific options with the file /etc/kanidm/uni
|
||||||
{{#rustdoc_include ../../../examples/unixd}}
|
{{#rustdoc_include ../../../examples/unixd}}
|
||||||
```
|
```
|
||||||
|
|
||||||
> **NOTICE:** All users in Kanidm can change their name (and their spn) at any time. If you change
|
> [!NOTE]
|
||||||
|
>
|
||||||
|
> All users in Kanidm can change their name (and their spn) at any time. If you change
|
||||||
> `home_attr` from `uuid` you _must_ have a plan on how to manage these directory renames in your
|
> `home_attr` from `uuid` you _must_ have a plan on how to manage these directory renames in your
|
||||||
> system. We recommend that you have a stable ID (like the UUID), and symlinks from the name to the
|
> system. We recommend that you have a stable ID (like the UUID), and symlinks from the name to the
|
||||||
> UUID folder. Automatic support is provided for this via the unixd tasks daemon, as documented
|
> UUID folder. Automatic support is provided for this via the unixd tasks daemon, as documented
|
||||||
> here.
|
> here.
|
||||||
>
|
>
|
||||||
> **NOTE:** Ubuntu users please see:
|
> Ubuntu users please see:
|
||||||
> [Why aren't snaps launching with home_alias set?](../frequently_asked_questions.md#why-arent-snaps-launching-with-home_alias-set)
|
> [Why aren't snaps launching with home_alias set?](../frequently_asked_questions.md#why-arent-snaps-launching-with-home_alias-set)
|
||||||
|
|
||||||
You can then check the communication status of the daemon:
|
You can then check the communication status of the daemon:
|
||||||
|
@ -110,13 +112,17 @@ getent group testgroup
|
||||||
testgroup:x:2439676479:testunix
|
testgroup:x:2439676479:testunix
|
||||||
```
|
```
|
||||||
|
|
||||||
> **HINT** Remember to also create a UNIX password with something like
|
> [!HINT]
|
||||||
|
>
|
||||||
|
> Remember to also create a UNIX password with something like
|
||||||
> `kanidm account posix set_password --name idm_admin demo_user`. Otherwise there will be no
|
> `kanidm account posix set_password --name idm_admin demo_user`. Otherwise there will be no
|
||||||
> credential for the account to authenticate with.
|
> credential for the account to authenticate with.
|
||||||
|
|
||||||
## PAM
|
## PAM
|
||||||
|
|
||||||
> **WARNING:** Modifications to PAM configuration _may_ leave your system in a state where you are
|
> [!WARNING]
|
||||||
|
>
|
||||||
|
> Modifications to PAM configuration _may_ leave your system in a state where you are
|
||||||
> unable to login or authenticate. You should always have a recovery shell open while making changes
|
> unable to login or authenticate. You should always have a recovery shell open while making changes
|
||||||
> (for example, root), or have access to single-user mode at the machine's console.
|
> (for example, root), or have access to single-user mode at the machine's console.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
# Fedora / CentOS
|
# Fedora / CentOS
|
||||||
|
|
||||||
> **WARNING:** Kanidm currently has no support for SELinux policy - this may mean you need to run
|
> [!WARNING]
|
||||||
|
>
|
||||||
|
> Kanidm currently has no support for SELinux policy - this may mean you need to run
|
||||||
> the daemon with permissive mode for the `unconfined_service_t` daemon type. To do this run:
|
> the daemon with permissive mode for the `unconfined_service_t` daemon type. To do this run:
|
||||||
> `semanage permissive -a unconfined_service_t`. To undo this run
|
> `semanage permissive -a unconfined_service_t`. To undo this run
|
||||||
> `semanage permissive -d unconfined_service_t`.
|
> `semanage permissive -d unconfined_service_t`.
|
||||||
|
|
|
@ -10,7 +10,9 @@ authentication:
|
||||||
/etc/pam.d/common-session
|
/etc/pam.d/common-session
|
||||||
```
|
```
|
||||||
|
|
||||||
> **IMPORTANT** By default these files are symlinks to their corresponding `-pc` file, for example,
|
> [!IMPORTANT]
|
||||||
|
>
|
||||||
|
> By default these files are symlinks to their corresponding `-pc` file, for example,
|
||||||
> `common-account -> common-account-pc`. If you directly edit these you are updating the inner
|
> `common-account -> common-account-pc`. If you directly edit these you are updating the inner
|
||||||
> content of the `-pc` file and it WILL be reset on a future upgrade. To prevent this you must first
|
> content of the `-pc` file and it WILL be reset on a future upgrade. To prevent this you must first
|
||||||
> copy the `-pc` files. You can then edit the files safely.
|
> copy the `-pc` files. You can then edit the files safely.
|
||||||
|
@ -67,5 +69,7 @@ session optional pam_kanidm.so
|
||||||
session optional pam_env.so
|
session optional pam_env.so
|
||||||
```
|
```
|
||||||
|
|
||||||
> **WARNING:** Ensure that `pam_mkhomedir` or `pam_oddjobd` are _not_ present in any stage of your
|
> [!WARNING]
|
||||||
|
>
|
||||||
|
> Ensure that `pam_mkhomedir` or `pam_oddjobd` are _not_ present in any stage of your
|
||||||
> PAM configuration, as they interfere with the correct operation of the Kanidm tasks daemon.
|
> PAM configuration, as they interfere with the correct operation of the Kanidm tasks daemon.
|
||||||
|
|
|
@ -149,7 +149,9 @@ You can then use this to run the Kanidm server in docker with a user:
|
||||||
docker run --rm -i -t -u 1000:1000 -v kanidmd:/data kanidm/server:latest /sbin/kanidmd ...
|
docker run --rm -i -t -u 1000:1000 -v kanidmd:/data kanidm/server:latest /sbin/kanidmd ...
|
||||||
```
|
```
|
||||||
|
|
||||||
> **HINT** You need to use the UID or GID number with the `-u` argument, as the container can't
|
> [!HINT]
|
||||||
|
>
|
||||||
|
> You need to use the UID or GID number with the `-u` argument, as the container can't
|
||||||
> resolve usernames from the host system.
|
> resolve usernames from the host system.
|
||||||
|
|
||||||
## Minimum TLS key lengths
|
## Minimum TLS key lengths
|
||||||
|
|
|
@ -80,7 +80,7 @@ WORKDIR /data
|
||||||
|
|
||||||
EXPOSE 8443 3636
|
EXPOSE 8443 3636
|
||||||
|
|
||||||
ENV RUST_BACKTRACE 1
|
ENV RUST_BACKTRACE=1
|
||||||
|
|
||||||
HEALTHCHECK \
|
HEALTHCHECK \
|
||||||
--interval=60s \
|
--interval=60s \
|
||||||
|
|
|
@ -65,7 +65,7 @@ RUN \
|
||||||
# == Construct the tools container
|
# == Construct the tools container
|
||||||
FROM repos
|
FROM repos
|
||||||
|
|
||||||
ENV RUST_BACKTRACE 1
|
ENV RUST_BACKTRACE=1
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
--mount=type=cache,id=zypp,target=/var/cache/zypp \
|
--mount=type=cache,id=zypp,target=/var/cache/zypp \
|
||||||
|
|
|
@ -57,8 +57,7 @@ RUN \
|
||||||
# == Construct the orca container
|
# == Construct the orca container
|
||||||
FROM repos
|
FROM repos
|
||||||
|
|
||||||
ENV RUST_BACKTRACE 1
|
ENV RUST_BACKTRACE=1
|
||||||
|
|
||||||
|
|
||||||
COPY --from=builder /usr/src/kanidm/target/release/orca /sbin/
|
COPY --from=builder /usr/src/kanidm/target/release/orca /sbin/
|
||||||
COPY ./tools/orca/profile-sample.toml /etc/kanidm/profile-sample.toml
|
COPY ./tools/orca/profile-sample.toml /etc/kanidm/profile-sample.toml
|
||||||
|
|
Loading…
Reference in a new issue