Configurer des groupes et des politiques
Après avoir effectué les étapes dans Intégrer HashCorp Vault à Okta, vous pouvez créer des groupes et des politiques.
Configurer des groupes dans Okta
Créez un groupe pour chaque type d'utilisateur (administrateurs et développeurs, par exemple) qui nécessite un accès à HCP Vault.
- Pour chaque groupe provenant d'Okta que vous souhaitez créer, suivez les étapes de la section Créer un groupe. Assurez-vous que chaque nom de groupe utilise le préfixe okta-group-vault. Par exemple, okta-group-vault-admins pour les utilisateurs administrateurs et okta-group-vault-developer pour les utilisateurs développeurs.
- Affectez manuellement des personnes à un groupe (ou Affectez en masse des personnes à un groupe pour accorder des niveaux accès granulaires aux utilisateurs).
Configurez des politiques dans HCP Vault
Créez une politique pour chacun des groupes d'utilisateurs créés dans la section précédente. Les politiques garantissent que différents profils et capacités d'utilisateurs peuvent accéder aux clés secrètes qui sont stockées dans HCP Vault. Voir Introduction aux politiques pour plus d'informations. Il existe deux façons de configurer les politiques : Utiliser une commande de l'interface de ligne de commande ou Utiliser l'API.
Utiliser une commande de l'interface de ligne de commande
- Exécutez cette commande pour créer un fichier de politique nommé vault-policy-developer-read.hcl:#!/bin/bash tee vault-policy-developer-read.hcl <<EOF # Read permission on the k/v secrets path "/secret/*" { capabilities = ["read", "list"] } EOF
- Exécutez cette commande pour créer une politique nommée vault-policy-developer-read. La politique utilise le fichier que vous avez créé lors de l'étape précédente :#!/bin/bash vault policy write vault-policy-developer-read vault-policy-developer-read.hcl
- Exécutez cette commande pour créer un fichier de politique nommé vault-policy-admin.hcl:#!/bin/bash tee vault-policy-admin.hcl <<EOF # Admin policy path "*" { capabilities = ["sudo","read","create","update","delete","list","patch"] } EOF
- Exécutez cette commande pour créer une politique nommée vault-policy-admin. La politique utilise le fichier que vous avez créé lors de l'étape précédente :#!/bin/bash vault policy write vault-policy-admin vault-policy-admin.hcl
- Exécutez cette commande pour afficher les politiques que vous venez de créer, ainsi que les politiques HCP Vault par défaut :#!/bin/bash vault policy list
Utiliser l'API
Effectuez ces étapes dans HCP Vault Dedicated ou HCP Vault.
HCP Vault Dedicated
- Envoyez une requête API qui contient une politique au format JSON vault-policy-developer-read : #!/bin/bash tee vault-policy-developer-read.json <<EOF { "policy": "path \"/secret/*\" {\n\tcapabilities = [\"read\", \"list\"]\n}\n" } EOF
- Créez une politique nommée vault-policy-developer-read that uses the policy that's defined in vault-policy-developer-read.json:curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request PUT \ --data @vault-policy-developer-read.json \ $VAULT_ADDR/v1/sys/policies/acl/vault-policy-developer-read
- Créez une requête API qui contient une politique au format JSON vault-policy-admin : #!/bin/bash tee vault-policy-admin.json <<EOF { "policy": "path \"/secret/*\" {\n\tcapabilities = [\"read\", \"list\", \"sudo\", \"create\", \"update\", \"delete\", \"patch\"]\n}\n" } EOF
- Créez une politique nommée vault-policy-admin that uses the policy that's defined in vault-policy-admin.json: curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request PUT \ --data @vault-policy-admin.json \ $VAULT_ADDR/v1/sys/policies/acl/vault-policy-admin
- Exécutez cette commande pour afficher les politiques que vous venez de créer, ainsi que les politiques par défaut dans HCP Vault : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ $VAULT_ADDR/v1/sys/policy | jq '.data | .policies'
HCP Vault
- Envoyez une requête API qui contient une politique au format JSON vault-policy-developer-read : #!/bin/bash tee vault-policy-developer-read.json <<EOF { "policy": "path \"/secret/*\" {\n\tcapabilities = [\"read\", \"list\"]\n}\n" } EOF
- Créez une politique nommée vault-policy-developer-read that uses the policy that's defined in vault-policy-developer-read.json: curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request PUT \ --data @vault-policy-developer-read.json \ $VAULT_ADDR/v1/sys/policies/acl/vault-policy-developer-read
- Créez une requête API qui contient une politique au format JSON vault-policy-admin : #!/bin/bash tee vault-policy-admin.json <<EOF { "policy": "path \"/secret/*\" {\n\tcapabilities = [\"read\", \"list\", \"sudo\", \"create\", \"update\", \"delete\", \"patch\"]\n}\n" } EOF
- Créez une politique nommée supervisory-policy-admin qui utilise la politique définie dans supervisory-policy-admin.json : curl --header "X-Vault-Token: $VAult_TOken" \ - -request PUT \ --data @vault-policy-admin.json \ $VAult_ADDR/v1/sys/policies/acl/vault-policy-admin
- Exécutez cette commande pour afficher les politiques que vous venez de créer, ainsi que les politiques Vault HCP par défaut : curl --header "X-Vault-Token: $VAult_TOken" \ $VAult_ADDR/v1/sys/policy | jq '.data | .policies'
Configurer des groupes dans HCP Vault
Créez des groupes dans HCP Vault qui correspondent aux groupes que vous avez créés dans Okta. Il existe deux façons de configurer les politiques : Utiliser une commande de l'interface de ligne de commande ou Utiliser l'API.
Utiliser une commande de l'interface de ligne de commande
- Exécutez cette commande pour créer un rôle appelé vault-role-okta-group-vault-developer. Cette action affecte la politique par défaut au rôle suivant :#!/bin/bash vault write auth/oidc/role/vault-role-okta-group-vault-developer \ bound_audiences="$OKTA_CLIENT_ID" \ allowed_redirect_uris="$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback" \ allowed_redirect_uris="http://localhost:8250/oidc/callback" \ user_claim="sub" \ token_policies="default" \ oidc_scopes="groups" \ groups_claim="groups"
- Exécutez cette commande pour créer un groupe appelé okta-group-vault-developer et affectez-le à la politique vault-policy-developer-read :#!/bin/bash vault write identity/group name="okta-group-vault-developer" type="external" \ policies="vault-policy-developer-read" \ metadata=responsibility="okta-group-vault-developer"
- Exécutez cette commande pour créer une variable appelée GROUP_ID. La variable contient l'ID du groupe que vous venez de créer.#!/bin/bash GROUP_ID=$(vault read -field=id identity/group/name/okta-group-vault-developer)
- Exécutez cette commande pour créer une variable OIDC_AUTH_ACCESSOR pour la méthode d'authentification OIDC :#!/bin/bash OIDC_AUTH_ACCESSOR=$(vault auth list -format=json jq -r '."oidc/".accessor')
- Exécutez cette commande pour créer un alias de groupe appelé okta-group-vault-developer. L'alias connecte la méthode authentification OIDC et le groupe que vous avez créé précédemment à la politique vault-policy-developer-read policy.#!/bin/bash vault write identity/group-alias name="okta-group-vault-developer" \ mount_accessor="$OIDC_AUTH_ACCESSOR" \ canonical_id="$GROUP_ID"
- Exécutez cette commande, puis connectez-vous en tant que développeur avec le rôleokta-group-vault-developer role:#!/bin/bash
vault login -method=oidc role="vault-role-okta-group-vault-developer"
Un message de réussite et une liste de paires clé-valeur s'affichent. Le jeton qui est renvoyé utilise vault-policy-developer-read ,car okta-group-vault-developer correspond au groupe Okta affecté.
- Déconnectez-vous d'Okta.
- Exécutez cette commande pour créer un rôle appelé vault-role-okta-group-vault-admins : #!/bin/bash vault write auth/oidc/role/vault-role-okta-group-vault-admins \ bound_audiences="$OKTA_CLIENT_ID" \ allowed_redirect_uris="$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback" \ allowed_redirect_uris="http://localhost:8250/oidc/callback" \ user_claim="sub" \ token_policies="default" \ oidc_scopes="groups" \ groups_claim="groups"
- Exécutez cette commande pour créer un groupe okta-group-vault-admins qui utilise la politiquevault-policy-admin : #!/bin/bash vault write identity/group name="okta-group-vault-admins" type="external" \ policies="vault-policy-admin" \ metadata=responsibility="okta-group-vault-admins"
- Exécutez cette commande pour créer une variable GROUP_ID qui stocke les ID de groupe okta-group-vault-admins : #!/bin/bash GROUP_ID=$(vault read -field=id identity/group/name/okta-group-vault-admins)
- Exécutez cette commande pour créer une variable OIDC_AUTH_ACCESSOR pour la méthode ad'uthentification OIDC : #!/bin/bash OIDC_AUTH_ACCESSOR=$(coffre-fort auth list -format=json | jq -r '."oidc/".accessor' )
- Exécutez cette commande pour créer un alias de groupe appelé okta-group-vault-admins. L'alias connecte la méthode d'authentification OIDC et le groupe que vous avez créé précédemment à la politique supervisory-policy-admin. #!/bin/bash coffre-fort Write identity/group-alias name="okta-group-vault-admins" \mount_accessor="$OIDC_AUTH_ACCESSOR" \ cannonical_id="$GROUP_ID"
- Exécutez cette commande, puis connectez-vous avec le rôle okta-group-vault-admins : #!/bin/bash coffre-fort login -method=oidc role="vault-role-okta-group-vault- admins"
Un message de réussite et une liste de paires clé-valeur s'affichent. Le jeton qui est renvoyé utilise supervisory-policy-admin car okta-group-vault-admins correspond au groupe Okta affecté.
Utiliser l'API
Effectuez ces étapes dans HCP Vault Dedicated ou HCP Vault.
HCP Vault Dedicated
- Envoyez une requête pour le rôle okta-group-vault-developer : #!/bin/bash tee vault-role-okta-group-vault-developer.json <<EOF { "bound_audiences": "$OKTA_CLIENT_ID", "allowed_redirect_uris": [ "$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback", "http://localhost:8250/oidc/callback" ], "user_claim": "sub", "token_policies": ["default"], "oidc_scopes": "groups", "groups_claim": "groups" } EOF
- Envoyez une requête pour créer un rôle appelé vault-role-okta-group-vault-developer:curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request POST \ --data @vault-role-okta-group-vault-developer.json \ $VAULT_ADDR/v1/auth/oidc/role/vault-role-okta-group-vault-developer
- Envoyez une requête qui affecte la politiquevault-policy-developer-read au groupe okta-group-vault-developer : #!/bin/bash tee okta-group-vault-developer.json <<EOF { "name": "okta-group-vault-developer", "policies": ["vault-policy-developer-read"], "type": "external", "metadata": { "responsibility": "okta-group-vault-developer" } } EOF
- Envoyez une requête pour créer un groupe qui contient la définition de groupe okta-group-vault-developer.json : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request POST --data @okta-group-vault-developer.json \ $VAULT_ADDR/v1/identity/group | jq
- Envoyez une requête pour créer une variable GROUP_ID pour le groupe okta-group-vault-developer : #!/bin/bash GROUP_ID=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request GET \ $VAULT_ADDR/v1/identity/group/name/okta-group-vault-developer | jq '.data | .id' -r)
- Envoyez une requête pour créer une variable OIDC_AUTH_ACCESSOR pour la méthode d'authentification OIDC : #!/bin/bash OIDC_AUTH_ACCESSOR=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ $VAULT_ADDR/v1/sys/auth | jq '.data | ."oidc/".accessor' -r)
- Utilisez cette commande pour créer un alias de groupe appelé okta-group-vault-developer:#!/bin/bash tee alias-okta-group-vault-developer.json <<EOF { "canonical_id": "$GROUP_ID", "mount_accessor": "$OIDC_AUTH_ACCESSOR", "name": "okta-group-vault-developer" } EOF
- Envoyez une requête qui partage l'alias okta-group-vault-developer avec HCP Vault :#!/bin/bash curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request POST -s \ --data @alias-okta-group-vault-developer.json \ $VAULT_ADDR/v1/identity/group-alias | jq
- Envoyez cette requête, puis connectez-vous en tant que développeur avec le rôle okta-group-vault-developer : #!/bin/bash
vault login -method=oidc role="vault-role-okta-group-vault-developer"
Un message de réussite et une liste de paires clé-valeur s'affichent. Le jeton qui est renvoyé utilise vault-policy-developer-read ,car okta-group-vault-developer correspond au groupe Okta affecté.
- Déconnectez-vous d'Okta.
- Envoyez une requête pour le rôle okta-group-vault-admins : #!/bin/bash tee vault-role-okta-group-vault-admins.json << EOF { "bound_audiences": "$OKTA_CLIENT_ID", "allowed_redirect_uris": [ "$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback", "http://localhost:8250/oidc/callback" ], "user_claim": "sub", "token_policies": ["default"], "oidc_scopes": "groups", "groups_claim": "groups" } EOF
- Envoyez une requête pour créer un rôle appelé vault-role-okta-group-vault-admins:curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request POST \ --data @vault-role-okta-group-vault-admins.json \ $VAULT_ADDR/v1/auth/oidc/role/vault-role-okta-group-vault-admins
- Envoyez une requête qui définit le groupeokta-group-vault-admins affecté à la politique vault-policy-admin : #!/bin/bash tee okta-group-vault-admins.json <<EOF { "name": "okta-group-vault-admins", "policies": ["vault-policy-admin"], "type": "external", "metadata": { "responsibility": "okta-group-vault-admins" } } EOF
- Envoyez une requête qui crée un groupe avec la définition du groupe dans okta-group-vault-admins.json:curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request POST \ --data @okta-group-vault-admins.json $VAULT_ADDR/v1/identity/group | jq
- Envoyez une requête pour créer une variable GROUP_ID qui contient l'ID de groupe okta-group-vault-admins : #!/bin/bash GROUP_ID=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request GET \ $VAULT_ADDR/v1/identity/group/name/okta-group-vault-admins | jq '.data | .id' -r)
- Envoyez une requête pour créer une variable OIDC_AUTH_ACCESSOR pour la méthode d'authentification OIDC : #!/bin/bash OIDC_AUTH_ACCESSOR=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ $VAULT_ADDR/v1/sys/auth | jq '.data | ."oidc/".accessor' -r)
- Envoyez une requête pour créer un alias okta-group-vault-admins : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --header "X-Vault-Namespace: $VAULT_NAMESPACE" \ --request POST -s \ --data @alias-okta-group-vault-admins.json \ $VAULT_ADDR/v1/identity/group-alias | jq
- Envoyez cette requête, puis connectez-vous avec le rôle vault-role-okta-group-vault-admin : #!/bin/bash
vault login -method=oidc role="vault-role-okta-group-vault-admins"
Un message de réussite et une liste de paires clé-valeur s'affichent. Le jeton qui est renvoyé utilise supervisory-policy-admin car okta-group-vault-admins correspond au groupe Okta affecté.
HCP Vault
- Envoyez une requête API pour le rôle okta-group-vault-developer : #!/bin/bash tee vault-role-okta-group-vault-developer.json << EOF { "bound_audiences": "$OKTA_CLIENT_ID", "allowed_redirect_uris": [ "$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback", "http://localhost:8250/oidc/callback" ], "user_claim": "sub", "token_policies": ["default"], "oidc_scopes": "groups", "groups_claim": "groups" }
- Envoyez une requête API pour le rôle appelé vault-role-okta-group-vault-developer : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST \ --data @vault-role-okta-group-vault-developer.json \ $VAULT_ADDR/v1/auth/oidc/role/vault-role-okta-group-vault-developer
- Envoyez une requête pour créer un groupe qui contient la définition de groupe okta-group-vault-developer.json : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST \ --data @okta-group-vault-developer.json \ $VAULT_ADDR/v1/identity/group | jq
- Envoyez une requête pour créer une variable GROUP_ID qui contient l'ID okta-group-vault-developer : #!/bin/bash GROUP_ID=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request GET \ $VAULT_ADDR/v1/identity/group/name/okta-group-vault-developer | jq '.data | .id' -r)
- Envoyez une requête pour créer une variable OIDC_AUTH_ACCESSOR pour la méthode d'authentification OIDC : #!/bin/bash OIDC_AUTH_ACCESSOR=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ $VAULT_ADDR/v1/sys/auth | jq '.data | ."oidc/".accessor' -r)
- Utilisez cette commande pour créer un alias pour okta-group-vault-developer : #!/bin/bash tee alias-okta-group-vault-developer.json <<EOF { "canonical_id": "$GROUP_ID", "mount_accessor": "$OIDC_AUTH_ACCESSOR", "name": "okta-group-vault-developer" } EOF
- Envoyez une requête pour partager l'alias okta-group-vault-developer avec HCP Vault : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST -s \ --data @alias-okta-group-vault-developer.json \ $VAULT_ADDR/v1/identity/group-alias | jq
- Envoyez cette requête, puis connectez-vous avec le rôle vault-role-okta-group-vault-developer : #!/bin/bash
vault login -method=oidc role="vault-role-okta-group-vault-developer"
Un message de réussite et une liste de paires clé-valeur s'affichent. Le jeton qui est renvoyé utilise vault-policy-developer-read ,car okta-group-vault-developer correspond au groupe Okta affecté.
- Déconnectez-vous d'Okta.
- Envoyez une requête pour le rôle okta-group-vault-admins : #!/bin/bash tee vault-role-okta-group-vault-admins.json << EOF { "bound_audiences": "$OKTA_CLIENT_ID", "allowed_redirect_uris": [ "$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback", "http://localhost:8250/oidc/callback" ], "user_claim": "sub", "token_policies": ["default"], "oidc_scopes": "groups", "groups_claim": "groups" } EOF
- Envoyez une requête API pour le rôle appelé vault-role-okta-group-vault-admins : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST \ --data @vault-role-okta-group-vault-admins.json \ $VAULT_ADDR/v1/auth/oidc/role/vault-role-okta-group-vault-admins
- Envoyez une requête qui affecte la politiquevault-policy-admin au groupe okta-group-vault-admins group : #!/bin/bash tee okta-group-vault-admins.json <<EOF { "name": "okta-group-vault-admins", "policies": ["vault-policy-admin"], "type": "external", "metadata": { "responsibility": "okta-group-vault-admins" } } EOF
- Envoyez une requête pour créer un groupe qui contient la définition de groupe okta-group-vault-admins.json group definition : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST \ --data @okta-group-vault-admins.json \ $VAULT_ADDR/v1/identity/group | jq
- Envoyez une requête pour créer une variable GROUP_ID qui contient le groupe okta-group-vault-admins : #!/bin/bash GROUP_ID=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request GET \ $VAULT_ADDR/v1/identity/group/name/okta-group-vault-admins | jq '.data | .id' -r)
- Envoyez une requête qui crée une variable OIDC_AUTH_ACCESSOR pour la méthode d'authentification OIDC : #!/bin/bash OIDC_AUTH_ACCESSOR=$(curl --header "X-Vault-Token: $VAULT_TOKEN" \ $VAULT_ADDR/v1/sys/auth | jq '.data | ."oidc/".accessor' -r)
- Utilisez cette commande pour créer un aliasokta-group-vault-admins : #!/bin/bash tee alias-okta-group-vault-admins.json <<EOF { "canonical_id": "$GROUP_ID", "mount_accessor": "$OIDC_AUTH_ACCESSOR", "name": "okta-group-vault-admins" } EOF
- Envoyez une requête pour partager l'alias okta-group-vault-admins avec HCP Vault : curl --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST -s \ --data @alias-okta-group-vault-admins.json \ $VAULT_ADDR/v1/identity/group-alias | jq
- Envoyez cette requête, puis connectez-vous avec le rôle vault-role-okta-group-vault-admins : #!/bin/bash
vault login -method=oidc role="vault-role-okta-group-vault-admins"
Un message de réussite et une liste de paires clé-valeur s'affichent. Le jeton qui est renvoyé utilise supervisory-policy-admin car okta-group-vault-admins correspond au groupe Okta affecté.
