Ir al contenido

HashiCorp Vault

Esta guía configura HashiCorp Vault para que los usuarios inicien sesión con Ironchip mediante OIDC. Incluye la aplicación en Ironchip, el método de autenticación en Vault y las políticas y roles de usuario y de administrador.

  • Acceso a la consola de administración de Ironchip.
  • Un usuario con permisos para realizar la configuración en Vault.

En la sección Applications puedes ver todos los servicios protegidos que se han añadido a Ironchip y sus características.

  1. Haz clic en New application. Se abre una ventana nueva.

  2. Elige Custom application.

  3. Rellena los parámetros de la nueva aplicación:

    • Nombre de la aplicación.

    • Tipo de integración: OIDC - OAuth 2.0.

    • URIs de redirección:

      • http://<host-de-tu-servicio>:8250/oidc/callback
      • http://<host-de-tu-servicio>:8200/ui/vault/auth/oidc/oidc/callback

    Formulario de la aplicación personalizada OIDC con las URIs de redirección

  4. Haz clic en Add service. El servicio aparece en la sección correspondiente.

  1. En la pestaña de acceso (Access), crea un nuevo método de autenticación oidc.

    Pestaña Access de Vault con la opción de crear un método de autenticación

  2. Introduce la ruta oidc, habilita List method when unauthenticated y haz clic en el botón para habilitar el método.

    Habilitación del método oidc con la ruta oidc

  3. En la configuración de OIDC, rellena estos parámetros:

    • OIDC discovery url: https://idp.ironchip.com/oidc
    • Default role: demo
    • OIDC response mode: query

    Parámetros de discovery url, default role y response mode

  4. Rellena también estos dos campos con los datos que devolvió Ironchip al crear la aplicación:

    • OIDC client ID: el ID de cliente.
    • OIDC client secret: el secreto del cliente.

    Campos OIDC client ID y OIDC client secret

  5. Haz clic en guardar. El nuevo método de autenticación oidc queda creado.

En la pestaña de políticas, si no hay ninguna política default definida, créala con este contenido. Es la política de los usuarios ordinarios, que no tendrán acceso a la pestaña de políticas.

Política default
# Allow tokens to look up their own properties
path "auth/token/lookup-self" {
capabilities = ["read"]
}
# Allow tokens to renew themselves
path "auth/token/renew-self" {
capabilities = ["update"]
}
# Allow tokens to revoke themselves
path "auth/token/revoke-self" {
capabilities = ["update"]
}
# Allow a token to look up its own capabilities on a path
path "sys/capabilities-self" {
capabilities = ["update"]
}
# Allow a token to look up its own entity by id or name
path "identity/entity/id/{{identity.entity.id}}" {
capabilities = ["read"]
}
path "identity/entity/name/{{identity.entity.name}}" {
capabilities = ["read"]
}
# Allow a token to look up its resultant ACL from all policies. This is useful
# for UIs. It is an internal path because the format may change at any time
# based on how the internal ACL features and capabilities change.
path "sys/internal/ui/resultant-acl" {
capabilities = ["read"]
}
# Allow a token to renew a lease via lease_id in the request body; old path for
# old clients, new path for newer
path "sys/renew" {
capabilities = ["update"]
}
path "sys/leases/renew" {
capabilities = ["update"]
}
# Allow looking up lease properties. This requires knowing the lease ID ahead
# of time and does not divulge any sensitive information.
path "sys/leases/lookup" {
capabilities = ["update"]
}
# Allow a token to manage its own cubbyhole
path "cubbyhole/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
# Allow a token to wrap arbitrary values in a response-wrapping token
path "sys/wrapping/wrap" {
capabilities = ["update"]
}
# Allow a token to look up the creation time and TTL of a given
# response-wrapping token
path "sys/wrapping/lookup" {
capabilities = ["update"]
}
# Allow a token to unwrap a response-wrapping token. This is a convenience to
# avoid client token swapping since this is also part of the response wrapping
# policy.
path "sys/wrapping/unwrap" {
capabilities = ["update"]
}
# Allow general purpose tools
path "sys/tools/hash" {
capabilities = ["update"]
}
path "sys/tools/hash/*" {
capabilities = ["update"]
}
# Allow checking the status of a Control Group request if the user has the
# accessor
path "sys/control-group/request" {
capabilities = ["update"]
}
# Allow a token to make requests to the Authorization Endpoint for OIDC providers.
path "identity/oidc/provider/+/authorize" {
capabilities = ["read", "update"]
}

Pestaña de políticas de Vault con la política default

Si quieres configurar un usuario administrador, crea una política admin con este contenido:

Política admin
path "sys/health"
{
capabilities = ["read", "sudo"]
}
path "sys/policies/acl"
{
capabilities = ["list"]
}
path "sys/policies/acl/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "auth/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "sys/auth/*"
{
capabilities = ["create", "update", "delete", "sudo"]
}
path "sys/auth"
{
capabilities = ["read"]
}
path "secret/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "sys/mounts/*"
{
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "sys/mounts"
{
capabilities = ["read"]
}

Con las políticas definidas, crea un rol para cada una. Se hace desde el terminal que ofrece la aplicación Vault. Sustituye CLIENT_ID por el client ID de la aplicación de Ironchip.

Para el usuario común, crea el rol demo:

Ventana de terminal
vault write auth/oidc/role/demo \
bound_audiences="CLIENT_ID" \
allowed_redirect_uris="http://<host-de-tu-servicio>:8200/ui/vault/auth/oidc/oidc/callback" \
allowed_redirect_uris="http://<host-de-tu-servicio>:8250/oidc/callback" \
user_claim="sub" \
policies="default" \
verbose_oidc_logging="true"

Para el administrador, crea el rol admin:

Ventana de terminal
vault write auth/oidc/role/admin \
bound_audiences="CLIENT_ID" \
allowed_redirect_uris="http://<host-de-tu-servicio>:8200/ui/vault/auth/oidc/oidc/callback" \
allowed_redirect_uris="http://<host-de-tu-servicio>:8250/oidc/callback" \
user_claim="sub" \
policies="admin" \
verbose_oidc_logging="true"

Antes de probar, comprueba que el usuario está añadido a la aplicación de Ironchip.

  1. Abre la página de inicio de sesión de Vault y selecciona el método OIDC.
  2. Si eres un usuario común, deja el Role vacío: Vault usa el rol por defecto demo. Para entrar como administrador, escribe admin.
  3. Haz clic en Sign in with OIDC Provider. Vault te redirige a Ironchip.
  4. Autoriza el acceso con Ironchip. Vuelves a Vault con la sesión iniciada y las políticas del rol.