Formation DevOps | Formation AWS Services : 2- Service IAM
IDENTITY AND ACCESS MANAGEMENT (IAM)
Réaliser des requêtes API
➢ Connexion à la console Web et réaliser des actions en cliquant sur des liens
➢ CLI : ligne de commande
» Shell unix ou Powershell
» Exemple de requête : aws ec2 run-instances […]
➢ SDKs : programmation Java, Node.js, Python,etc.
» Outils tiers qui s’appuient sur les SDKs : par ex.Ansible (Python)
Filtrage des requêtes API
Compte racine : « AWS root account »
- Créé lors de l’inscription à la plate-forme AWS
- Equivalent d’un compte root ousuper-user
- Il permet de créer le premier compteIAM
- Attention à la sécurité : ne doit pas être utilisé comme compte de travail
» On ne peut pas révoquer ses droits
» Dès qu’un user IAM admin existe, oublier le compte root
Compte root et compte IAM admin
Privilégier l’utilisation des comptes IAM
Comptes IAM
- Comptes utilisateurs(users)
- Associés éventuellement à des groupes(groups)
- Bénéficiantd’autorisations(policy)
» Héritées des groupes auxquels ils appartiennent
» Ou bien appliquées individuellement
Groupes IAM
- On y associe des utilisateurs et autorisations (policy)
- Les membres bénéficient des droits du groupe
Rôles IAM
- Similaire à un compte utilisateur mais non nominatif
» Aucun crédits d’authentificationsassociés - Une ressource peut prendre ce rôle
» Par ex. une instance EC2 pour accéder àS3 - Un compte IAM peut prendre ce rôle
» Par ex. un utilisateur IAM d’un autre « Master Account» peut utiliser ce rôle
pour exécuter des appels API localement - Un compte fédéré peut prendre ce rôle
» Par ex. un utilisateur qui s’est authentifié via unfournisseur d’identité tiers (Google,
Facebook,…)
Rôle IAM et Crossaccount
Utilisation des rôles
- Un utilisateur ou une instance qui souhaite prendre un rôle doit obtenir
d’AWS STS des clés d’accès temporaires (AccessKey, SecretKey, Token)
» AWS STS : Security Token Service - Les clés expirent au bout d’1 heure
» Le renouvellement estautomatique
Authentification : 3 cas d’utilisation
-
Cas n°1 : envoi de requêtes APIs via la WebConsole
» Identifiant / mot de passe du compte IAM (ou root)
» Après authentification, switch possible vers un rôle IAM -
Renforcement possible par Multi-Factor Authentication (MFA)
» One Time Password : something you own, something you know
» Matériel ou souware (virtual MFA) synchronisés
Authentification : 3 cas d’utilisation
- Cas n°2 : envoi de requêtes APIs depuis l’extérieur du cloud AWS:
» Seul choix possible : Access Key / Secret Key d’un compte IAM
» Après authentification, switch possible vers un rôle IAM
Authentification : 3 cas d’utilisation
-
Cas n° 2 déconseillé pour des raisons desécurité
» L’environnement est exposé worldwide via les APIs -
Mais si pas d’autres choix:
»Renouveler les Keysrégulièrement
»Exploiter les « policy conditions »IAM
○Programmer une expiration desdroits
○Limiter à une IPsource
Authentification : 3 cas d’utilisation
- Cas n°3 : envoi de requêtes APIs depuis l’intérieur du cloud AWS :
» Access Key / Secret Key déconseillé
» EC2 Role (Instance profile) recommandé
Authentification : 3 cas d’utilisation
- Cas n°3 : l’hyperviseur met à disposition de l’instance des jeux d’Access Key / Secret Keytemporaires
» Rotation automatique des clés
» Utilisé automatiquement par la CLI, les SDKs
» Mécanisme transparent pour le code applicatif
» Switch possible vers un rôleIAM
Requête temporaires pour auprès du service STS afin le rôle A (AccessKey, SecretKey,d’obtenir des crédits Token)d’authentification
Obtenir des « temporary credentials » pour accéder aux ressources à l’aide d’unrôle
Utiliser des « temporary credentials » pour
envoyer des requêtesAPIs
Les grâces requêtes suivantes, pour accéder à ces crédits temporaires (AccessKey, SecretKey,aux ressources, sont Token)réalisées
Autorisations : User policy
- S’associent à des « principal entities » (utilisateurs, groupes ou rôles) par la Web Console ou via API
» Par défaut : aucun droit (tout droit doit êtreexplicite) - Types depolicy
» Managed : policy partagée par plusieurs utilisateurs, groupes ou rôles (« principal
entities »), versionnée, dont on peut déléguer la gestion à un compte IAM
spécifique
» Inline : policy attachée à un seul « principal entity» - Format JSON
Autorisations : policies IAM
- Décrit les actions autorisées (par défaut : aucundroits)
- FormatJSON
- Se gèrent via la console Web ou par APIs
- 2 types de policy:
» User policy
» Resource based policy
Autorisations : user policy
- S’appliquer à une entity (user, groupe, rôle)
- Description des actions que l’entity peut exécuter
- Se gère via la console Web IAM (ou par APIs)
Autorisations : resource based policy
- S’appliquent à une ressource
»Bucket S3, Glacier, SNS, file SQS, OpsWorks, Lambda - Description des actions que l’on peut exécuter sur la
ressource - Se gère via la console du service (S3, SNS, …) (ou APIs)
Anatomie d’une user policy
{
"Effect":"Allow",
"Action": "ec2: StartInstances",
"Resource":"*"
}
Autoriser ousupprimer
L’actionautorisée
La ressource surappliquerl’actionlaquelle
Anatomie d’une user policy
{
"Effect":"Allow",
"Action": "ec2: StartInstances",
"Resource":"arn:aws:ec2:eu-
west-1:123456789012:instance/
i-1234567890abcdef0"
}
laquelle s’appliqueARN de la ressource sur l’action
Identifiants des ressources et « entities »
-
ARN = Amazon Resource Names
-
Identifiant unique d’une ressource Amazon(global)
-
Structure:
arn : aws : service : region : account-id : resourceType/resourcePath
» service : ec2, s3, iam, rds, etc.
» region : eu-west-1, us-east-1,etc.
○ Ne s’applique qu’aux services régionaux
○ Ne rien préciser pour services globaux (par ex.iam)
» account-id : identifiant du compte AWSracine
» resourceType : type de ressource (par ex. : instance)
» resourcePath : identifiant de la ressource (un ID ou un wildcard) -
Réf :http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
Exemples
Un utilisateur :
arn:aws:iam:: 123456789012 :user/Bob
Une instance:
arn:aws:ec2:us-east-1: 123456789012 :instance/i-1a2b3c4d
Un load balancer :
arn:aws:elasticloadbalancing:eu-west-1: 123456789012 :loadbalancer/myelb
Anatomie d’une user policy
{
"Effect":"Allow",
"Action": "ec2: StartInstances",
"Resource":"*"
}
Autoriser ousupprimer
L’actionautorisée
La ressource surappliquerl’actionlaquelle
Anatomie d’une user policy
Insérer dans un bloc « lapermissionStatement»
“Statement”:[
{
“Effect”:“Allow”,
“Action”: “ec2: StartInstances”,
“Resource”:"*"
}
]
Anatomie d’une user policy
"Statement":[
{
"Effect":"Allow",
"Action": "ec2: StartInstances",
"Resource":"*"
},
{
"Effect":"Allow",
"Action": "s3:Get*",
"Resource":"arn:aws:s3:::mybucket/*"
}
]
Eventuellement ajouter d’autres permissions dans le mêmebloc
« Statement»
Anatomie d’une user policy
Ajouter Utilisé pour la policyla version duIAMlangage {"Version":"2012- 10 - 17",
"Statement":[
{
"Effect":"Action": "ec2: StartInstances", "Allow",
"Resource":"*"
{ },
"Effect":"Allow",
"Action": "s3:Get*",
"Resource": "arn:aws:s3:::mybucket/*"
] }
}
Anatomie d’une user policy
{
"Version":"Statement":"2012[ - 10 - 17",
{
"Sid":"DemarrerMesInstance",
"Effect":"Action": "ec2: StartInstances", "Allow",
"Resource":"*"
},
{
"Sid":"AccesAuBucket",
"Effect":"Allow",
"Action": "s3:Get*","Resource": "arn:aws:s3:::mybucket/*"
...
Anatomie d’une user policy
- Bloc optionnel : condition
» condition(s) à respecter pour valider le « statement » - Exemples de conditions:
» SourceIp : adresse IP sourcespécifique
» DateLessThan : avant une certainedate
» InstanceType : un certain type d’instance (t2, m3,…) - Référence :
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-
structure.html
Ajout d’une pour l’action DescribeInstancescondition d’exécution
{"Version":"2012- 10 - 17",
"Statement":[
{
"Sid": »DemarrerMesInstance",
"Effect":"Allow",
"Action": "ec2: StartInstances",
"Resource": "*»
"Condition": {
"StringEquals":{
"ec2:ResourceTag/Environment":"Prod"
}
}
{ },
"Sid":"AccesAuBucket",
...
Resource-Level Permission
- Ressources et conditions d’actions : toutes les combinaisons ne sont pas
supportées! - Exemple pour EC2
» Cette règle fonctionne:
Action ec2:StartInstances pour les instancest2.micro
» Cette règle ne fonctionne pas:
Action ec2:DescribeInstances pour les instances t2.micro
Resource-Level Permission
- Définir des ressources et des conditions n’est pas toujours possible
» Dépend des services et desactions
» Par exemple CloudWatch et Autoscaling : aucunsupport
» les autres services : supportpartiel - Table de référence (à consulter fréquemment):
» https://docs.aws.amazon.com/IAM/latest/UserGuide/ reference_aws-services-that-work-
with-iam.html
Autorisations : resource based policy
- S’appliquent à une ressource
»Bucket S3, Glacier, SNS, file SQS, OpsWorks,Lambda
User Policy vs Resource-based policy
Liens de comparaison
Anatomie d’une resource-based policy ( bucket S3)
"Statement":[
{
"Effect":"Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
],
"Resource": "arn:aws:s3:::mybucket/* »,
}
]
Autorise downloader et à uploader des objets
Il information manque une : QUI?
On fait référence à la ressource sur laquellela policy s’applique (i.e. le bucketlui-même)
Anatomie d’une resource-based policy pour S3
{
"Version": "2012"Statement":[ - 10 - 17 »,
{
"Effect":"Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
],
"Resource": "arn:aws:s3:::mybucket/*",
"Principal":{"AWS":"arn:aws:iam::123412341234:user/bob"}
}
]
}
Principal : entitéautorisée
à actions exécuter sur la les
ressources
Auditer et tester des policy IAM
- Tester des policy « à blanc » : IAM PolicySimulator
» Utilise le moteur d’évaluation des règles et n’envoie pas de requête API réelle - Tester les policy « en tant qu’un » utilisateur mais sans effets
» Utiliser l’option « DryRun » de la CLI - Repérer les policy jamais utilisées : Service Last Accessed Data
» Permet de visualiser les policy sous-utilisées ou jamais utilisées afin de réduire au
strict minimum les autorisationsnécessaires - Tracer toutes les requêtes API : CloudTrail
» Echec et succès des requêtes API et (tentatives d’)ouvertures de session
Cross-account : organiser les accès entre les environnements
- Par ex. : 3 différents Management Account
» Production, développement,management - Des rôles sont créés dans les comptes production etdév.
» Rôle Admin, rôle Exploit, rôle Audit,…
» Chaque rôle dispose de 2 policy:
○ Une policy décrivant les permissions d’accès aux ressourceslocales
○ Une “trust policy” indiquant que le Master Account de mananagement est autorisé à utiliser cesrôles - Les comptes IAM sont centralisés dans le compte Management
» Ils doivent être explicitement autorisés et se servir desrôles
Cross-account
« La Management gestion des utilisateurs IAM ». L’accès aux environnements est centralisée « dans leProduction compte»et
« Développement » est possible grâce auxrôles. 95
- Suppression des clés accèsracine
- ActiverMFA sur le compteracine
- Créerdes utilisateursIAM
- Utiliserdes groupes pour attribuer desdroits
- Créerune stratégie pour les mots depasse
https://policysim.aws.amazon.com/home/index.jsp
IAM Policy Similator
Pour résumer les bonnes pratiquesIAM
✓ Protéger vos clés d’accès Utilisateur racine d’un compteAWS
✓ Créer des utilisateurs IAMindividuels
✓ Utiliser des groupes pour attribuer des autorisations àdes utilisateursIAM
✓ Accorder le privilège le plusfaible
✓ Mise en route avec les autorisations à l’aide desstratégies géréesAWS
✓ Utiliser les stratégies gérées par le client au lieudes stratégies enligne
Decouvrez plus d’Offres de la plateform ItGalaxy.io :
Découvrez notre gamme complète de services et formations pour accélérer votre carrière.
1. Nous contactez
- Description: Besoin de Formation et des Solutions cloud complètes pour vos applications
- Links:
2. Infra as a Service
- Description: Infrastructure cloud évolutive et sécurisée
- Links:
3. Projets Développeurs
- Description: Découvrez des opportunités passionnantes pour les développeurs
- Links:
4. Développeurs
- Description: Rejoignez notre communauté de développeurs
- Links:
5. Formations Complètes
- Description: Accédez à des formations professionnelles de haute qualité
- Links:
6. Marketplace
- Description: Découvrez notre place de marché de services
- Links:
7. Blogs
- Description: Découvrez nos blogs
- Links:
- comment creer une application mobile ?
- Comment monitorer un site web ?
- Command Checkout in git ?
- Comment git checkout to commit ?
- supprimer une branche git
- dockercoin
- kubernetes c est quoi
- architecture kubernetes
- Installer Gitlab Runner ?
- .gitlab-ci.yml exemples
- CI/CD
- svelte 5 vs solid
- svelte vs lit
- solidjs vs qwik
- alpine vs vue
- Plateform Freelance 2025
- Creation d’un site Web gratuitement
This website is powered by ItGalaxy.io