Chapitre 9. Assumer un rôle AWS IAM pour un compte de service
Dans Red Hat OpenShift Service sur les clusters AWS qui utilisent le Service de jetons de sécurité AWS (STS), le serveur API OpenShift peut être activé pour projeter des jetons de compte de service signés qui peuvent être utilisés pour assumer un rôle AWS Identity and Access Management (IAM) dans un pod. Dans le cas où le rôle IAM présumé dispose des autorisations AWS requises, les pods peuvent s’authentifier par rapport à l’API AWS en utilisant des identifiants STS temporaires pour effectuer des opérations AWS.
Il est possible d’utiliser le webhook d’identité pod pour projeter des jetons de compte de service pour assumer un rôle AWS Identity and Access Management (IAM) pour vos propres charges de travail. Dans le cas où le rôle IAM assumé dispose des autorisations AWS requises, les pods peuvent exécuter des opérations SDK AWS en utilisant des informations d’identification STS temporaires.
9.1. Comment les comptes de services assument les rôles AWS IAM dans les projets appartenant à SRE Copier lienLien copié sur presse-papiers!
Lorsque vous installez un service Red Hat OpenShift sur le cluster AWS qui utilise le service de jetons de sécurité AWS (STS), des rôles AWS Identity and Access Management (IAM) spécifiques au cluster sont créés. Ces rôles IAM permettent au service Red Hat OpenShift sur AWS cluster Operators d’exécuter la fonctionnalité principale d’OpenShift.
Les opérateurs de cluster utilisent les comptes de service pour assumer des rôles IAM. Lorsqu’un compte de service assume un rôle IAM, des informations d’identification STS temporaires sont fournies pour que le compte de service puisse être utilisé dans la pod de l’opérateur du cluster. Lorsque le rôle assumé dispose des privilèges AWS nécessaires, le compte de service peut exécuter les opérations SDK AWS dans la pod.
Flux de travail pour assumer les rôles AWS IAM dans les projets appartenant à SRE
Le diagramme suivant illustre le flux de travail pour assumer les rôles AWS IAM dans les projets appartenant à SRE:
Figure 9.1. Flux de travail pour assumer les rôles AWS IAM dans les projets appartenant à SRE
Le flux de travail comporte les étapes suivantes:
Dans chaque projet qu’un opérateur de cluster exécute, la spécification de déploiement de l’opérateur dispose d’une monture de volume pour le jeton de compte de service projeté, et d’un secret contenant une configuration d’identification AWS pour le pod. Le jeton est lié à l’audience et au temps. Chaque heure, Red Hat OpenShift Service sur AWS génère un nouveau jeton, et le SDK AWS lit le secret monté contenant la configuration d’identification AWS. Cette configuration a un chemin vers le jeton monté et le rôle AWS IAM ARN. La configuration d’identification du secret comprend les éléments suivants:
- La variable $AWS_ARN_ROLE possède l’ARN pour le rôle IAM qui possède les autorisations requises pour exécuter les opérations SDK AWS.
- * une variable $AWS_WEB_IDENTITY_TOKEN_FILE qui a le chemin complet dans le pod vers le jeton OpenID Connect (OIDC) pour le compte de service. Le chemin complet est /var/run/secrets/openshift/serviceaccount/token.
- Lorsqu’un opérateur de cluster doit assumer un rôle AWS IAM pour accéder à un service AWS (tel qu’EC2), le code client AWS SDK s’exécutant sur l’opérateur invoque l’appel de l’API AssumeRoleWithWebIdentity.
Le jeton OIDC est transmis du pod au fournisseur OIDC. Le fournisseur authentifie l’identité du compte de service si les exigences suivantes sont remplies:
- La signature d’identité est valide et signée par la clé privée.
L’audience sts.amazonaws.com est listée dans le jeton OIDC et correspond à l’audience configurée dans le fournisseur OIDC.
NoteDans Red Hat OpenShift Service sur AWS avec des clusters STS, le fournisseur OIDC est créé lors de l’installation et défini comme émetteur de compte de service par défaut. L’audience sts.amazonaws.com est définie par défaut dans le fournisseur OIDC.
- Le jeton OIDC n’a pas expiré.
- La valeur de l’émetteur dans le jeton a l’URL pour le fournisseur OIDC.
- Lorsque le compte de projet et de service est dans le champ d’application de la politique de confiance pour le rôle de l’IAM qui est assumé, l’autorisation réussit.
- Après une authentification et une autorisation réussies, les informations d’identification AWS STS temporaires sous la forme d’un jeton d’accès AWS, d’une clé secrète et d’un jeton de session sont transmises à la pod pour utilisation par le compte de service. En utilisant les informations d’identification, le compte de service reçoit temporairement les autorisations AWS activées dans le rôle IAM.
- Lorsque l’opérateur de cluster s’exécute, l’opérateur qui utilise le SDK AWS dans la pod consomme le secret qui a le chemin vers le compte de service projeté et le rôle AWS IAM ARN pour s’authentifier contre le fournisseur OIDC. Le fournisseur OIDC retourne des informations d’identification STS temporaires pour l’authentification par rapport à l’API AWS.