Utilisez des profils sécurisés comme base pour des environnements de cloud sécurisés
Ce tutoriel peut entraîner des coûts. Utilisez l'Estimateur de coûts pour générer une estimation du coût en fonction de votre utilisation projetée.
IBM Cloud Identity and Access Management(IAM) vous permet de contrôler les utilisateurs qui voient, créent, utilisent et gèrent des ressources dans votre environnement de cloud. Votre environnement peut être un compte IBM Cloud unique, des comptes multiples ou une entreprise avec une hiérarchie de nombreux groupes de comptes et comptes. Lors de l'utilisation de ressources de compte, les utilisateurs et les ID de service sont souvent impliqués. Cependant, d'autres options sont disponibles pour gérer les accès, affecter des privilèges et identifier: Profils sécurisés.
Dans ce tutoriel, vous allez découvrir les profils sécurisés, leurs cas d'utilisation et comment les utiliser pour améliorer la sécurité. Les profils sécurisés peuvent servir de base pour les environnements cloud sécurisés, comme bloc de construction pour les solutions cloud sécurisées. Dans le cadre de ce tutoriel, vous allez créer un profil sécurisé qui est utilisé par une application pour effectuer des tâches d'administration.
Objectifs
- En savoir plus sur les cas d'utilisation des profils sécurisés
- Créez des profils sécurisés et gérez l'accès aux ressources de cloud
- Approfondissez vos connaissances sur Identity and Access Management (IAM)
- L'image de conteneur de l'application est extraite de Container Registry et déployée dans le cluster Kubernetes dans un espace de nom.
- L'utilisateur se connecte à l'application.
- L'application lit un jeton d'accès spécial à partir de l'environnement Kubernetes et le transforme en jeton d'accès IAM pour un profil sécurisé.
- IAM enregistre les événements d'audit dans IBM Cloud Activity Tracker Event Routing
Avant de commencer
Ce tutoriel ne nécessite aucune installation et utilise uniquement la consoleIBM Cloud.
Le IBM Cloud Activity Tracker Event Routing doit être configuré pour acheminer les événements d'audit vers une instance cible IBM Cloud Logs Acheminez les événements d'audit globaux comme décrit dans la configuration d'une cible IBM Logs si celle-ci n'est pas encore configurée dans votre compte.
Présentation: Profils sécurisés
A l'instar des utilisateurs et des ID de service, les profils sécurisés sont des identités qui peuvent être autorisées à accéder aux règles IAM. Les profils sécurisés diffèrent en ce qu'ils ne peuvent pas créer et posséder des clés d'API. Il s'agit d'une identité au sein d'un compte spécifique qui sert de "passerelle" à quelqu'un ou à quelque chose d'autre pour travailler dans ce compte sans avoir besoin d'une clé d'API. Ils peuvent prendre l'identité de ce profil sécurisé.
Vous configurez cette personne ou quelque chose d'autre (voir ci-dessous) dans le cadre de la configuration du profil sécurisé. Toutes les options habituelles sont disponibles: l'API IBM Cloud, l'interface de ligne de commande, l'un des SDK disponibles, Terraform ou la console IBM Cloud.
Dans la console, dans le cadre de la catégorie IAM, les profils sécurisés ont leur propre section. Là, vous pouvez facilement les créer et les gérer. La capture d'écran suivante montre la deuxième étape de la boîte de dialogue permettant de créer un profil sécurisé. Vous pouvez configurer le mode d'établissement de la confiance, qui permet à l'entité de prendre en charge l'identité du profil sécurisé. Il s'agit d'un ou de plusieurs des éléments suivants:
- Utilisateurs fédérés
- Ressource de calcul
- Services IBM Cloud
- ID de service
Cas d'utilisation de profil sécurisé
Les profils sécurisés sont des identités dans IBM Cloud. Ils peuvent être membres de groupes d'accès IAM et disposer ainsi de privilèges d'accès. Comme pour les utilisateurs et les ID de service, vous pouvez également affecter directement l'accès aux profils sécurisés. La caractéristique distinctive est la possibilité de configurer un profil sécurisé, afin que des identités ou des ressources spécifiques puissent agir sous son identité. Ces identités et ressources peuvent même se trouver dans d'autres comptes. Ainsi, à un niveau élevé, le cas d'utilisation de pour l'utilisation de profils sécurisés est d'autoriser le travail d'administration
- avec un ensemble de privilèges donné
- sous une identité spécifique
- pour les identités ou les ressources identifiées par un ensemble de propriétés configurées dans le cadre du profil sécurisé.
Les scénarios suivants sont de tels cas d'utilisation pour les profils sécurisés, qui diffèrent par la manière dont la confiance est établie:
- Mapper les utilisateurs fédérés et leur appartenance à un groupe aux privilèges IBM Cloud: configurez un profil sécurisé pour permettre aux utilisateurs d'un fournisseur d'identité fédérée d'assumer son identité. Vous pouvez définir le IdP et les attributs utilisateur à prendre en compte.
- Exécution de tâches d'administration à partir de ressources de calcul dédiées: Vous pouvez configurer un profil sécurisé pour établir une relation de confiance via une ressource de calcul connue. Ce type de ressource peut être un pod spécifique dans un cluster Kubernetes (y compris Red Hat OpenShift on IBM Cloud) ou une instance de serveur virtuel (VSI) dans un cloud privé virtuel (IBM Cloud VPC).
- Exécution de tâches d'administration à partir d'un ID de service identifié: Un ID de service provenant du même compte ou d'un autre compte est autorisé à prendre en charge l'identité du profil sécurisé.
- Déployez des ressources de cloud à partir d'une instance d'un service de cloud spécial: configurez une instance d'un service IBM Cloud, identifié par son CRN (nom de ressource de cloud) pour être autorisé à assumer l'identité d'un profil sécurisé. Un scénario typique consiste pour un projet d'entreprise à déployer une architecture.
Etablir la confiance
Comme indiqué dans la présentation, différentes options sont disponibles sur la façon d'établir la confiance, comment une entité peut assumer l'identité d'un profil sécurisé.
Identité fédérée
Les utilisateurs qui utilisent un ID de connexion unique d'entreprise ou d'entreprise pour se connecter à IBM Cloud sont appelés identités fédérées. Le fournisseur de connexion unique (SSO) agit en tant que fournisseur d'identité (IdP). Un avantage majeur de l'utilisation des identités fédérées est que les utilisateurs n'ont pas besoin de nouvelles données d'identification à utiliser avec IBM Cloud et peuvent continuer à utiliser le IdP de leur société pour l'authentification.
Les identités fédérées peuvent être utilisées avec des profils sécurisés et dans les règles dynamiques des groupes d'accès IAM.
ressource de traitement
Au lieu des propriétés utilisateur fournies par un fournisseur d'identité, dans ce cas, la confiance est établie via des attributs de ressources de calcul. Vous pouvez configurer pour n'approuver qu'une application s'exécutant dans, par exemple, un espace de nom et un pod spécifiques dans un cluster Kubernetes, ou une instance de serveur virtuel dans un VPC avec une combinaison spécifique de valeurs pour le groupe de ressources, la région, le sous-réseau et la zone. Cette application sécurisée peut prendre l'identité du profil sécurisé et effectuer des tâches avec les privilèges qui lui sont affectés.
L'avantage de l'utilisation d'un profil sécurisé basé sur une ressource de calcul est que cette solution évite l'utilisation d'une clé d'API. Par conséquent, il n'y a pas d'exigences et de défis sur la façon de créer, de stocker et de protéger une clé d'API partagée, d'affecter et de gérer des privilèges. L'application qui suppose l'identité d'un profil sécurisé extrait simplement un jeton de ressource de calcul spécial, puis le transforme en jeton d'accès IAM standard pour le profil sécurisé. Ensuite, les tâches prévues peuvent être effectuées avec le jeton fourni pour l'authentification.
Pour plus d'informations sur le jeton de ressource de calcul, voir l'article de blogue Developer Tricks: Simulate Cloud Security for Local App Development. Découvrez comment développer et tester localement des applications à l'aide de ce jeton.
ID de service
Une autre méthode pour établir la confiance consiste à spécifier un ID de service. L'ID de service peut provenir du même compte ou d'un autre compte. Etant donné que les ID de service sont des identités uniques dans tous les comptes IBM Cloud, aucun autre attribut n'a besoin d'être configuré. Avec cette configuration en place, un ID de service d'un compte A peut désormais demander à assumer l'identité d'un profil sécurisé dans le compte B et effectuer des tâches (administratives).
Instance de service de cloud
Comme pour un ID de service, il est possible de spécifier le nom de ressource de cloud (CRN) d'une instance de service IBM Cloud, afin que l'instance soit une ressource sécurisée. Cette instance de service peut se trouver dans le même compte ou dans un autre compte. A l'heure actuelle, son seul scénario pris en charge est pour un projet d'entreprise pour déployer une architecture. Les projets, en tant qu'instances de service, avec des architectures déployables peuvent être gérés de manière centralisée dans un seul compte. En établissant la confiance via le CRN du projet, il peut assumer l'identité d'un profil sécurisé dans un autre compte dans la même hiérarchie de comptes d'entreprise ou dans une autre, puis déployer un canevas de solution avec ses ressources.
Profil sécurisé avec ressource de calcul
Pour mettre la théorie en pratique, vous allez autoriser une application conteneurisée à effectuer des tâches dans un compte IBM Cloud L'application est déployée sur un cluster Kubernetes. Il sert de ressource de calcul qui sera utilisée pour établir la confiance afin d'utiliser le profil sécurisé. Vous pouvez effectuer toutes les étapes suivantes dans un navigateur Web avec plusieurs onglets ouverts. Veillez à laisser les onglets du navigateur ouverts comme indiqué.
Pour des raisons de sécurité, l'application fonctionne en mode lecture seule. Il tente de regrouper une liste de vos ressources déployées. Vous allez affecter des privilèges à l'application qui détermine les ressources qu'elle peut lire. En outre, vous allez déployer l'application de manière à ce qu'elle soit accessible à partir du cluster Kubernetes uniquement, et non à partir de l'Internet public.
L'article de blogue Turn Your Container into a Trusted Cloud Identity présente le même scénario.
Cluster Kubernetes en tant que ressource de calcul
Kubernetes Service fournit un environnement permettant de déployer des applications hautement disponibles dans des conteneurs exécutés dans des clusters Kubernetes.
Sautez cette section si vous avez un cluster existant que vous voulez réutiliser avec ce tutoriel. Dans le reste de ce tutoriel, le nom du cluster est référencé comme mycluster-tpcr, remplacez-le simplement par le nom de votre cluster. Notez que la version minimale requise de Kubernetes est 1.21.
Un cluster minimal doté d'une (1) zone, d'un noeud worker (1) et de la plus petite taille disponible (version) est suffisant pour ce tutoriel. Une version minimale Kubernetes de 1.21 est requise. Veillez à sélectionner une version appropriée lors de la création du cluster.
Ouvrez les clustersKubernetes et cliquez sur Créer un cluster. Pour plus de détails sur le type de cluster, voir la documentation référencée ci-dessous. Récapitulatif :
- Cliquez sur Cluster de niveau standard
- Pour Kubernetes sur l'infrastructure VPC, voir la documentation de référence Creating VPC clusters.
- Cliquez sur Créer un VPC:
- Entrez un nom pour le VPC.
- Choisissez le même groupe de ressources que le cluster.
- Cliquez sur Créer.
- Connectez une Public Gateway à chacun des sous-réseaux que vous créez:
- Accédez aux clouds privés virtuels.
- Cliquez sur le VPC précédemment créé utilisé pour le cluster.
- Faites défiler vers le bas jusqu'à la section des sous-réseaux et cliquez sur un sous-réseau.
- Dans la section Public Gateway, cliquez sur Détaché pour changer l'état en Connecté.
- Cliquez sur le bouton Précédent du navigateur pour revenir à la page des détails VPC.
- Répétez les trois étapes précédentes pour connecter une passerelle publique à chaque sous-réseau.
- Cliquez sur Créer un VPC:
- Pour Kubernetes sur l'infrastructure classique, voir la documentation de référence Creating classic cluster.
- Choisissez un groupe de ressources.
- Décochez toutes les zones sauf une.
- Réduisez à 1 le nombre de noeuds worker par zone.
- Choisissez la plus petite version de pool de noeuds worker.
- Pour Nom du cluster, utilisez mycluster-tpcr.
- Désactivez toutes les options de sécurité pour ce cluster de démonstration qui sera supprimé à la fin de ce tutoriel. Il sera important de les évaluer soigneusement pour les autres groupes que vous créerez.
Une fois le cluster mis à disposition, laissez l'onglet de navigateur (présentation du cluster) ouvert et disponible ultérieurement. Vous pouvez néanmoins passer aux étapes suivantes.
Créer un profil sécurisé
- Dans un nouvel onglet de navigateur (Profil sécurisé IAM), utilisez la navigation principale Gérer > Accès (IAM), puis Profils sécurisés sur la gauche pour accéder à la présentation des profils sécurisés. Créez ensuite un nouveau profil de confiance.
- Utilisez TPwithCR comme Nom et entrez une brève Description, par exemple,
Test trusted profile with compute resource. Cliquez ensuite sur Continuer. - Dans le deuxième onglet du formulaire, sous Sélectionner le type d'entité digne de confiance, sélectionnez Calculer les ressources et une boîte de dialogue Créer une relation de confiance apparaît. Dans ce cas, choisissez Kubernetes comme Type de service de calcul.
- Ensuite, vous pouvez choisir entre toutes les ressources de service ou des ressources de service spécifiques.
- Cliquez sur Ressources spécifiques et la zone de formulaire suivante s'affiche.
- Dans Entrez ou sélectionnez une instance, cliquez sur Ajouter une ressource. Ensuite, dans la zone Autoriser l'accès à, sélectionnez le cluster Kubernetes mycluster-tpcr.
- Entrez ensuite tptest comme valeur pour Namespace. Laissez la zone Compte de service telle qu'elle est pour utiliser la valeur par défaut.
- Terminez en cliquant sur Continuer.
- Cliquez ensuite sur Politique d'accès. Dans la liste des services, sélectionnez Tous les services activés pour Identity and Access et cliquez sur Suivant. Accédez à Toutes les ressources, cliquez à nouveau sur Suivant, puis sélectionnez Visualiseur, puis cliquez à nouveau sur Suivant. Dans la section Rôles et actions, sélectionnez Lecteur pour Accès au service et Afficheur pour Accès à la plateforme. Lorsque vous avez terminé, cliquez sur Suivant et enfin sur Ajouter.
- Passez en revue le Récapitulatif à droite, puis créez le profil sécurisé avec la relation de confiance affichée et les privilèges d'accès répertoriés. Laissez l'onglet du navigateur ouvert pour plus tard.
L'utilisation d'un groupe d'accès pour affecter un accès est une meilleure pratique. Par souci de simplicité, nous avons choisi d'affecter un accès en lecture seule via une règle d'accès direct. Il est recommandé de créer un groupe d'accès avec des privilèges affectés, puis d'en faire un membre du profil sécurisé.
Déploiement de l'application
Avec le cluster Kubernetes et le profil sécurisé en place, il est temps de déployer une application de test simple. Le code source de l'application et de la configuration se trouve dans le GitHub trusted-profile-enterprise-security. Vous n'en avez pas besoin pour le déploiement, mais vous pourriez être intéressé par la façon dont il fonctionne néanmoins.
-
Dans l'onglet de navigateur présentation du cluster, vérifiez que le cluster a été entièrement déployé. Dans une configuration à un nœud, l'état de l'entrée peut signaler un avertissement. Vous pouvez actualiser le navigateur et vérifier que les autres coches sont vertes. Si tel est le cas, cliquez sur le tableau de bordKubernetes et un nouvel onglet de navigateur s'ouvre (tableau de bordKubernetes).
-
En haut à gauche, recherchez le sélecteur d'espace de nom et basculez sur Tous les espaces de nom.
-
Dans l'angle supérieur droit, cliquez sur + pour créer une ressource. Collez le contenu suivant dans le formulaire de texte Créer à partir d'une entrée.
apiVersion: v1 kind: Namespace metadata: name: tptest labels: name: tptest --- apiVersion: v1 kind: Service metadata: name: trustedprofile-test namespace: tptest spec: ports: - port: 8080 targetPort: 8080 protocol: TCP type: ClusterIP selector: app: tptest --- apiVersion: apps/v1 kind: Deployment metadata: name: trustedprofile-test-deployment namespace: tptest spec: selector: matchLabels: app: tptest replicas: 1 template: metadata: labels: app: tptest spec: containers: - name: tptest-container image: icr.io/solution-tutorials/tutorial-trusted-profile-enterprise-security:v1.0.3 imagePullPolicy: Always ports: - containerPort: 8080 volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token serviceAccountName: default volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iamCliquez ensuite sur Télécharger pour créer les ressources de l'application. Il inclut un nouvel espace de nom Kubernetes tptest, un déploiement et un service avec un pod.
Vous trouverez le code source pour la configuration YAML ci-dessus sur GitHub.
-
Dans la colonne de navigation de gauche, cliquez sur Déploiements pour vérifier l'état du nouveau déploiement trustedprofile-test-deployment. Cliquez ensuite sur Pods dans la même colonne de navigation et remarquez un pod dont le nom commence par trustedprofile-test-deployment. Une fois qu'il affiche le statut vert, passez à la section suivante.
Tester le profil sécurisé
Avec le profil sécurisé et le cluster Kubernetes avec l'application en cours d'exécution en place, il est temps de le tester. Commencez par ouvrir un shell basé sur un navigateur pour exécuter des commandes, un onglet pour les journaux du conteneur, et un autre pour les journaux IBM Cloud Logs.
-
Dans l'onglet actuellement actif Tableau de bordKubernetes avec les pods, cliquez sur le menu avec trois points à droite et cliquez avec le bouton droit de la souris sur Exec dans ce menu. Choisissez d'ouvrir le lien dans un nouvel onglet (shell de conteneur). Il ouvre un interpréteur de commandes pour le conteneur en cours d'exécution. Toujours dans l'onglet de navigateur Tableau de bordKubernetes, cliquez à nouveau sur le menu des trois points, puis cliquez avec le bouton gauche de la souris sur Journaux. Dans le nouveau menu à trois points, activez l'option Actualiser automatiquement.
Enfin, ouvrez un onglet avec le serviceIBM Cloud Logs, sélectionnez l'onglet Cloud Logs et cliquez sur le nom de l'instance qui reçoit les événements d'audit.
-
Dans l'onglet de navigateur shell de conteneur, exécutez la commande suivante dans le shell pour tester l'application:
curl -s localhost:8080Ce qui précède doit renvoyer un objet JSON avec codeversion et result. Vous devriez voir une nouvelle activité de journal dans l'onglet Tableau de bordKubernetes avec les journaux. Ensuite, dans l'onglet shell de conteneur, exécutez la commande suivante:
curl -s localhost:8080/api/listresources_crn | jqLa commande appelle l'application en tentant d'extraire la liste des ressources du compte, mais aucun nom de profil sécurisé n'est fourni. Le résultat doit être un objet JSON formaté avec un message d'erreur.
-
Répétez la commande ci-dessus, mais indiquez maintenant le profil sécurisé à utiliser:
curl -s localhost:8080/api/listresources_crn?tpname=TPwithCR | jqDésormais, le résultat doit être un objet JSON formaté avec des informations sur les ressources de votre compte. Pour plus de lisibilité, seuls les CRN de ressource sont renvoyés. Utilisez
localhost:8080/api/listresourcespour les détails complets de l'objet. Vous pouvez également essayer un autre nom de profil sécurisé non existant et examiner le message d'erreur.Lorsqu'elle est appelée, l'application lit d'abord le jeton pour la ressource de calcul. Ensuite, il transforme le jeton en jeton d'accès IAM pour le profil sécurisé spécifié. Enfin, il appelle l'API de contrôleur de ressourcesIBM Cloud pour extraire des informations sur les instances de service. Le résultat dépend des privilèges configurés du profil sécurisé. Si vous le souhaitez, examinez le code source de l'application.
-
Passez à l'onglet du navigateur IBM Cloud Logs et utilisez la boîte de recherche en bas pour rechercher le terme profil. Il doit s'agir de l'instance configurée comme cible d'un événement d'audit. It should return at least one line with
IAM Identity Service: login.computeresource-token TPwithCR.Open the info panelto expand the record to examine details, look for the initiateur section. Il répertorie le profil sécurisé qui a été utilisé pour la demande et les informations sur la ressource de calcul. Le authName doit correspondre à votre déploiement à partir de l'onglet du navigateur du tableau de bordKubernetes.
Details in the activity log -
A présent, consultez l'onglet de navigateur Tableau de bordKubernetes et consultez le journal du conteneur. L'application imprime les détails sur le jeton d'accès JWT qu'elle utilise pour s'authentifier afin de répertorier les ressources. Examinez les paires clé / valeur individuelles, y compris sub (sujet) deux fois. Ils sont liés au profil sécurisé et à la ressource de calcul.
-
Accédez à l'onglet de navigateur Profil sécurisé IAM avec la configuration pour TPwithCR. Dans le formulaire, cliquez sur l'onglet Accès, puis sur le menu à trois points pour Tous les services activés pour Identity and Access, sélectionnez Editer. A présent, il doit afficher Edit policy for TPwithCR. Cliquez sur Editer pour Ressources et sélectionnez Ressources spécifiques. Sélectionnez Région comme Type d'attribut et comme Valeur, par exemple, Francfort. Terminez en appuyant sur Sauvegarder.
-
Revenez à l'onglet de navigateur shell de conteneur et exécutez à nouveau cette commande pour répertorier les ressources:
curl -s localhost:8080/api/listresources?tpname=TPwithCR | jqLe résultat peut être différent de ci-dessus, en fonction de l'endroit où vous avez déployé d'autres ressources dans votre compte. Revoir les logsIBM Cloud Logs et les onglets du navigateur du tableau de bordKubernetes à la recherche de nouvelles activités de log.
-
Vous pouvez revenir à l'étape 6 et éditer à nouveau la règle d'accès, puis effectuer un nouveau test à l'étape 7. Vous pouvez modifier la règle d'accès en ajoutant des régions ou en la limitant à des services spécifiques au lieu de Tous les services activés pour l'identité et l'accès.
Suppression de ressources
Lorsque vous avez terminé de tester le scénario ci-dessus avec des profils sécurisés et des ressources de calcul, vous pouvez supprimer les ressources en procédant comme suit:
- Pour supprimer le cluster Kubernetes, cliquez sur Actions en haut à droite dans l'onglet de navigateur présentation du cluster, puis sur Supprimer le cluster.
- Dans l'onglet Profils de confiance IAM avec le profil de confiance TPwithCR, cliquez sur Actions et Suppression pour supprimer le profil de confiance.
En fonction de la ressource, le service peut ne pas être supprimé immédiatement mais conservé un certain temps (7 jours par défaut). Pour récupérer la ressource, vous pouvez la supprimer de manière définitive ou la restaurer pendant la période de conservation. Pour savoir comment utiliser la récupération de ressources, consultez ce document.