Formation DevOps | Formation AWS Services : 2- Service IAM

www.itgalaxy.io

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

  1. Suppression des clés accèsracine
  2. ActiverMFA sur le compteracine
  3. Créerdes utilisateursIAM
  4. Utiliserdes groupes pour attribuer desdroits
  5. 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


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io