Configurer la gestion des accès Kubernetes
Conditions nécessaires
- Une équipe Okta Privileged Access existante avec la fonctionnalité de gestion des accès Kubernetes activée
- Un cluster K8s existant
- Un appareil sur lequel Terraform et le fournisseur OktaPAM Terraform sont installés et configurés.
- Un appareil avec le client Okta Privileged Access version 1.61.2 ou ultérieure installé
- Un appareil avec
kubectlinstallé
Préparer le fournisseur Okta PAM Terraform
Pour commencer, les administrateurs doivent créer un fichier Terraform qui définit les ressources de cluster à créer dans Okta Privileged Access. Ce fichier doit également inclure les informations d'authentification pour une équipe Okta Privileged Access spécifique. Pour en savoir plus, voir Authentification.
Exemple
terraform {
required_providers {
oktapam = {
source = "okta/oktapam"
version = "0.2.1"
}
}
}
provider "oktapam" {
# Authentication options
oktapam_key = # An Okta PAM API Key
oktapam_secret = # An Okta PAM API Secret
oktapam_team = # An Okta PAM Team Name
}
Configurer Okta Privileged Access pour la gestion des accès dans Kubernetes
Pour que Okta Privileged Access puisse gérer l'accès aux clusters Kubernetes, Okta Privileged Access et les clusters gérés doivent être configurés avec des informations mutuelles.
Pour gérer efficacement chaque cluster, il est essentiel de créer et de mettre à jour un objet de cluster qui inclut l'adresse du serveur API et le certificat TLS du cluster. Chaque cluster géré par Kubernetes doit être configuré de manière à utiliser Okta Privileged Access comme point de terminaison d'authentification OIDC. Le fournisseur OktaPAM Terraform prend en charge les ressources spécifiques à Kubernetes qui sont utilisées pour configurer Okta Privileged Access avec ces informations pour chaque cluster.
Une fois les ressources pour votre cluster créées dans Okta Privileged Access, les administrateurs Okta Privileged Access peuvent consulter les informations relatives aux clusters depuis la section Kubernetes de la console Okta Privileged Access.
Clusters : affiche la liste de tous les clusters précédemment ajoutés. Les équipes peuvent également voir rapidement les libellés associées sur cette page. En cliquant sur un cluster spécifique, vous ouvrez une vue détaillée où les équipes peuvent récupérer l'URL d'authentification OIDC associée au cluster.
Groupes de clusters : affiche la liste de tous les groupes de clusters précédemment ajoutés. Les équipes peuvent voir les libellés pour chaque groupe de clusters sur cette page.
Tâche 1 : Ajouter un cluster à Okta Privileged Access
Tout d'abord, les administrateurs de ressources Okta Privileged Access doivent ajouter les blocs de ressources qui définissent une ou plusieurs ressources de cluster K8 à créer dans Okta Privileged Access. Chaque ressource de cluster dispose d'une URL OIDC associée qui est ensuite utilisée pour configurer l'authentification pour le cluster spécifique. Les équipes peuvent ajouter plusieurs clusters en même temps, mais elles doivent créer un bloc de ressources distinct pour chaque cluster.
Les équipes peuvent éventuellement définir un ou plusieurs sélecteurs de libellés pour la ressource de cluster. Ces libellés permettent aux équipes de contrôler l'accès de groupe à chaque cluster.
| Requête | |
|---|---|
| Paramètre | Description |
auth_mechanism |
Mécanisme spécifique utilisé pour fournir des informations d'authentification au cluster. Actuellement, seul OIDC_RSA2048 est pris en charge. |
key |
Nom lisible utilisé pour identifier le cluster dans Okta Privileged Access. Il ne peut pas inclure d'espaces. Les caractères autorisés sont A à Z et 0 à 9. |
labels |
Carte des libellés utilisées pour contrôler l'accès des groupes dans Okta Privileged Access. |
| Réponse | |
| Propriété | Description |
id |
ID de la ressource créée dans Okta Privileged Access. |
oidc_issuer_url |
URL de l'émetteur OIDC à utiliser lors de la configuration de votre cluster K8s. |
Exemple
|
|
Tâche 2 : Mettre à jour Okta Privileged Access avec les informations de cluster
Okta Privileged Access a besoin d'informations supplémentaires sur les clusters qu'il gère pour gérer les fichiers de configuration kubectl et garantir que les utilisateurs peuvent accéder aux clusters. Ces informations comprennent l'adresse du serveur API du cluster et le certificat utilisé pour la connexion HTTPS établie avec le serveur API du cluster. En fonction de la façon dont votre cluster a été créé et de l'endroit où il est hébergé, vous pouvez récupérer ces informations à partir d'un fichier d'état Terraform (pour les clusters créés avec Terraform) ou à partir de la console de gestion du cluster ou du serveur API.
| Requête | |
|---|---|
| Paramètre | Description |
cluster_id |
ID du cluster renvoyé depuis la ressource oktapam_kubernetes_cluste. |
api_url |
URL HTTPS du cluster Kubernetes. Il s'agit du point de terminaison qui est configuré dans les fichiers kubeconfig de l'utilisateur par le client Okta Privileged Access . |
public_certificate |
Certificat TLS au format PEM utilisé par le serveur API du cluster. Ce certificat est utilisé par kubectl pour vérifier le certificat présenté par le serveur API du cluster. Remarque :
Pour les clusters AWS EKS, le certificat de confiance est affiché sur la page des détails d'AWS EKS. Toutefois, les données du certificat doivent être converties au format PEM avant de pouvoir être transmises à cette ressource. La commande |
| Réponse | |
| Propriété | Description |
id |
ID de la ressource créée dans Okta Privileged Access. |
oidc_issuer_url |
URL de l'émetteur OIDC à utiliser lors de la configuration de votre cluster K8s. |
Exemple
|
|
Tâche 3 : Créer un groupe de clusters
Enfin, les administrateurs doivent créer un ou plusieurs blocs de ressources de groupe de clusters. Les groupes de clusters mappent les groupes Okta Privileged Access existants avec les clusters Kubernetes et permettent aux équipes de définir des libellés et des demandes spécifiques pour chaque groupe. Les équipes peuvent ajouter plusieurs groupes de clusters en même temps, mais elles doivent créer un bloc de ressources distinct pour chaque groupe.
Les libellés déterminent à quel cluster les membres d'un groupe peuvent accéder. Par exemple, une équipe peut appliquer le sélecteur env: prod à certains clusters et le sélecteur env: dev à d'autres. Dans ce cas, elle n'affectera l'étiquette prod qu'à un groupe spécifique.
Lorsque vous spécifiez les demandes que Okta Privileged Access doit inclure dans des jetons, assurez-vous que le nom de clé de la demande créée dans Okta Privileged Access correspond exactement au nom de clé configuré dans une liaison de rôle de cluster. De même, si la valeur de demande du cluster Kubernetes spécifiée dans la liaison de rôle spécifie un préfixe à utiliser (AWS EKS), assurez-vous que la valeur de demande configurée dans Okta Privileged Access inclut le préfixe et la valeur de la demande.
Par exemple, si la configuration OIDC du cluster EKS est définie avec une valeur groupsPrefix de pam et une valeur groupsClaim de groups, lorsque vous créez un ClusterGroup dans Okta Privileged Access, la demande qui est configurée doit être groups = pam:<groupname>, où <groupname> est le nom d'une liaison de rôle qui a été créée sur le cluster.
Les demandes sont incluses dans des jetons créés par Okta Privileged Access et sont utilisées par les clusters Kubernetes pour mapper un jeton à une liaison de rôle Kubernetes. Tous les membres d'un groupe reçoivent ce rôle lorsqu'ils interagissent avec un cluster associé.
Cette fonctionnalité ne crée pas (et ne gère pas) les liaisons de rôle sur le cluster. Les rôles et les liaisons de rôles mappés aux demandes doivent être préconfigurés sur le cluster.
| Requête | |
|---|---|
| Paramètre | Description |
cluster_selector |
Un sélecteur de libellé est utilisé pour faire correspondre les clusters K8. |
group_name |
Nom lisible d'un groupe Okta Privileged Access. Les valeurs sont sensibles à la casse (maj/min). |
claims |
Mappage des demandes à inclure avec les identifiants utilisateur en vue d'une utilisation avec l'authentification en cluster. Les demandes correspondent à des liaisons de rôles préconfigurées sur le cluster. |
| Réponse | |
| Propriété | Description |
id |
ID de la ressource créée dans Okta Privileged Access. |
Exemple
|
|
Tâche 4 : Configurer votre cluster
Une fois que l'équipe a créé des ressources dans Okta Privileged Access, les administrateurs doivent configurer un cluster afin d'utiliser Okta Privileged Access pour l'authentification.
Lorsqu'une équipe ajoute un cluster avec le fournisseur OktaPam Terraform, elle reçoit une URL d'authentification OIDC unique. Les administrateurs se servent de l'URL pour forcer le cluster à authentifier les utilisateurs avec Okta Privileged Access. Consultez la documentation Kubernetes.
Clusters minikube
Si vous prévoyez de tester la fonctionnalité de gestion des accès Kubernetes sur un cluster minikube, le tableau suivant décrit les paramètres qui doivent être transmis à la commande de démarrage minikube.
| Arguments de démarrage minikube | |
|---|---|
| Paramètre | Description |
apiserver.authorization-mode |
Définissez cette valeur sur RBAC pour activer le protocole RBAC Kubernetes sur le cluster. |
apiserver.oidc-issuer-url |
URL OIDC générée par Okta Privileged Access lors de la création du cluster. Vous pouvez la consulter sur la page Détails du cluster dans Okta Privileged Access Dashboard. |
apiserver.oidc-username-claim |
Demande JWT qui définit le nom d'utilisateur. Saisissez |
apiserver.oidc-groups-claim |
Demande JWT qui définit le groupe. Cette valeur doit correspondre à une ou plusieurs demandes de groupes configurées dans Okta Privileged Access ClusterGroups. Elle est généralement définies sur « groups ». |
apiserver.oidc-client-id |
Définissez cette valeur sur kubernetes. |
Exemple de commande de démarrage minikube
|
|
Cluster AWS ECS
Les clusters AWS EKS nécessitent une configuration plus poussée pour authentifier les clusters avec Okta Privileged Access. Le tableau suivant fournit un exemple simple de configuration d'un cluster EKS. Pour en savoir plus, consultez la documentation Authentification de cluster EKS. Un fichier YAML d'exemple pour l'association d'identités aux clusters EKS, l'activation de l'authentification et de l'accès avec Okta Privileged Access, est documenté ci-dessous pour une utilisation avec l'interface de ligne de commande eksctl.
| Configuration EKS | |
|---|---|
| Paramètre | Description |
IssuerUrl |
Un sélecteur de libellé est utilisé pour faire correspondre les clusters K8. |
ClientId |
Nom lisible d'un groupe Okta Privileged Access existant. Les valeurs sont sensibles à la casse (maj/min). |
UsernameClaim |
Mappage des demandes à inclure avec les identifiants utilisateur en vue d'une utilisation avec l'authentification en cluster. Les demandes correspondent à des liaisons de rôles préconfigurées sur le cluster. |
GroupsClaim |
Demande JWT qui définit le groupe. Cette valeur doit correspondre à une ou plusieurs demandes de groupes configurées dans Okta Privileged Access ClusterGroups. Elle est généralement définies sur « groups ». |
UsernamePrefix |
Facultatif. Chaîne ajoutée aux comptes utilisateur pour éviter les conflits. Saisissez une chaîne descriptive, par exemple : |
GroupsPrefix |
Facultatif. Chaîne ajoutée aux groupes d'utilisateurs pour éviter les conflits. Saisissez une chaîne descriptive, par exemple : |
|
Exemple de fichier de Fournisseur d'identité associé (à utiliser avec eksctl)
Exemple de rôle de cluster
Exemple de liaison de rôle
|
|
Rubriques connexes