====== Security/Compliance ======
----
===== Identity & Access Management (IAM) =====
Service global qui couvre toutes les régions
==== Composants ====
=== Users ===
* Objets identifiant les utilisateurs (personne ou compte pour l'accès d'une application)
* Un utilisateur peut être associé à 10 groupes maximum
=== Groups ===
* Objets identifiant plusieurs utilisateurs.
* Sont associés à des policy permissions.
* Par défaut 100 groupes maximum par compte.
=== Roles ===
* Objets associés à différentes identités pour leur donner des permissions
* 4 types de roles : AWS Service Role, AWS Service-Linked Role, Role for Cross-Account Access, Role for Identity Provider Access
=== Policy Permissions ===
* JSON policies qui définissent quelles ressources peuvent être accédées ou pas.
* Fournis par AWS ou définis par le client.
=== Access Control Mechanisms ===
* Mécanismes qui indiquent comment une ressource peut être accédée
==== Security Status ====
5 bonnes pratiques vérifiés par AWS sur le compte :
* Activation MFA sur le compte root
* créer des utilisateurs individuels
* utiliser des groupes pour assigner les permissions
* appliquer une IAM password policy
* changer les clés d'accès régulièrement
==== IAM Policies ====
=== Managed Policies ===
* Peuvent être attachées à plusieurs utilisateurs, groupes ou rôles
* AWS Managed Policies : police préconfigurée proposée par AWS pour les besoins classiques
* Customer Managed Policies : peuvent être créés en modifiant une fournie par AWS, à partir du Policy Genrerator ou manuellement
=== Inline Policies ===
* Attachée à un seul utilisateur, groupe ou rôle
* Création par le Policy Generator ou manuellement
==== Multi-Factor Authentication (MFA) ====
* Double authentification
==== Identity Federation ====
* Permet l'accès sans compte AWS avec une identification tierce d'un Identity Provider (IdP)
* Fonctionne avec 2 type IdP : OpenID Connect (Facebook, Amazon, Google, ...) et SAML (MS Active Directory)
==== Cross-Account Access ====
* Permet l'accès aux services d'un autre compte AWS à l'aides des roles
* Trusted account : compte auquel on fait confiance (celui à qui on donne l'accès)
* Trusting account : compte qui fait confiance (celui qui donne l'accès)
* On prend le role en basculant au niveau du compte "switch role"
----
[[all:bibles:aws:presentation:8-security|Haut de page]]
===== KMS =====
Fonctionne au sein d'une région
==== Cryptographie ====
=== symmetric encryption ===
* une seule clef est utilisée pour crypter et décrypter les données
* Exemples : AES, DES (Digital Encryption Standard), Triple-DES, Blowfish, ...
=== asymmetric cryptography ===
* on génère une clef publique et une clef privée
* on donne la clef publique pour crypter les données
* les 2 clefs sont nécessaires pour décrypter, nous seront donc les seuls à pouvoir le faire
* Exemples : RSA (Rivest-Shamir-Adleman), Diffie-Hellman, Digital Signature Algorithm
==== Composants ====
=== Customer Master Keys (CMK) ===
* Utiliser typiquement pour encrypter les DEK qui sont ensuite utilisées par d'autres services AWS
* 2 types : Customer managed CMKs et AWS managed CMKs
=== Data Encryption Keys (DEK) ===
* Créés par par les CMKs et utilisées pour encrypter les données
* Envelope encryption : la clef de cryptage est elle-même cryptée
=== Key Policies ===
* Définir les accès aux clefs KMS
=== Grants ===
* Délégation d'accès aux clefs KMS à un service AWS
==== Accès ====
=== Via Key Policies ===
=== Via Key Policies avec IAM ===
=== Via Key Policies avec Grants ===
==== Management ====
=== Rotation ===
* Possibilité d'activer une rotation automatique tous les 365 jours (impossible sur une clef importée). Les clefs précédentes sont toujours utilisables sur les données cryptées avant.
=== Importation ===
* Importation d'une clef publique
=== Suppression ===
* KMS programme l'effacement dans un délai de 7 à 30 jours. La clef est mise dans un état "Pending deletion" où elle ne peut plus servir
* Possibilité d'utiliser CloudTrail pour détecter une utilisation ou bien de programmer une alarme avec CloudWatch
* En cas de doute sur l'absence d'utilisation de la clef il est également possible de la désactiver plutôt que de la supprimer
----
[[all:bibles:aws:presentation:8-security|Haut de page]]
===== CloudHSM =====
* HSM : Hardware Security Module, composant physique non partagé
----
===== Secret Manager =====
==== Secret Manager ====
* Permet le stockage de secrets (mot de passe, clefs d'accès, ...)
* Cryptage systématique
* Possibilité d'activer une rotation automatique pour mettre à jour automatiquement à partir d'une lambda fonction
* Possibilité de partager avec un autre compte AWS
* Jusqu'à 10 Ko, payement pour chaque secret storage plus le nombre d'appels via l'API chaque mois
* Accès défini par des IAM identity-based policies et IAM resource-based policies
==== Parameter Store ====
* Permet le stockage de paramètres (qui peuvent être aussi des mots de passe)
* Cryptage optionnel
* Pas de gestion de rotation automatique
* Standard jusqu'à 4Ko (gratuit) ou advanced jusqu'à 8 Ko (payant)
----
[[all:bibles:aws:presentation:8-security|Haut de page]]
===== AWS Organizations =====
{{ :all:bibles:aws:organization.jpg?600 |}}
* Root :container en haut de l'organisation, tous les éléments se trouvent sous ce root
* Organizational Units : pour catégoriser les account. Rattaché sous root ou une autre OU (jusqu'à 5 niveaux)
* Accounts : ce sont les comptes AWS dans lesquels on peut gérer les ressources
* Service Control Policies : contrôle quels services et fonctionnalités sont accessibles par un compte. Ces SCPs peuvent être associées au niveau root, OU ou account (elles s'appliquent ensuite à tous les objets enfants)
----
[[all:bibles:aws:presentation:8-security|Haut de page]]
===== Firewall =====
==== Web Application Firewall (WAF) ====
=== Conditions ===
* Cross-site scripting
* Geo match
* IP addresses
* Size constraints
* SQL injection attacks
* String and regex matching
=== Rules ===
* Regular Rule : association de conditions (ET logique)
* Rate-based Rule : limite les accès depuis une adresse IP au delà d'un certains nombre de requête par période de 5 mn
=== ACLs ===
Association d'une action à chaque règle
* Allow
* Block
* Count
=== Intégration avec CloudWatch ===
* Par défaut relevé toutes les minutes et conservés pour 2 semaines
* Les métriques sont : AllowedRequests, BlockedRequests, CountedRequests, PassedRequests (requêtes qui ne correspondent à aucune règle WAF)
=== Intégration avec CloudFront ===
* Une fois l'association faite entre une WEB ACL et une distribution CloudFront, cela peut prendre 15mn à se propager à tous les Edge Locations
* Possibilité de customiser l'erreur 403 retourné à l'utilisateur
==== AWS Firewall Manager ====
Permet de gérer WAF dans un environnement de plusieurs compte au travers des Organizations.
=== Prérequis ===
* Le compte doit faire partie d'une organization
* Un compte doit être défini comme Firewall Manager Admin
* AWS Config doit être activé
=== Composants ===
* WAF Rules
* Rules Groups : regroupe des règles qui ont la même action (Block ou Count mais pas Allow). A créer soi-même ou à acheter sur AWS Marketplace
* Firewall Manager Policies : contient les Rules Groups à assigner aux ressources. 2 Rules groups max par Policy (1 customer et 1 Marketplace)
Coût : 100$ / mois par policy et par région.
==== AWS Shield ====
Prévention contre les attaques DDoS (Distributed Denial of Service) qui peuvent être de différents types :
* SYN flood : envoi de SYN et suite au SYN ACK laisse la connexion ouverte
* DNS query flood : attaque du DNS par de multiples requêtes
* HTTP flood/Cache-busting : attaque par requêtes HTTP éventuellement en passant outre du cache pour attaquer le serveur source
=== AWS Shield Standard ===
* Gratuit
* Contre les attaques DDoS au niveau 3 (réseau) et niveau 4 (transport)
* Intégré dans CloudFront et Route 53
=== AWS Shield Advanced ===
* Protection des applications sur EC2, CloudFront, ELB et Route 53
* Protection plus importante des attaques DDoS niveau 3 (réseau), niveau 4 (transport) et niveau 7 (application)
* Assistance 24/24 d'une équipe spécialisée
* 3 000 $ / mois avec WAF intégré + frais de transfert
----
===== AWS Single-Sign On (SSO) =====
Permet un accès à plusieurs account AWS avec un un accès SSO.
----
[[all:bibles:aws:presentation:8-security|Haut de page]]
===== Cognito =====
Authentication and user management service
==== User pool ====
* Pour créer et maintenir l'annuaire des utilisateurs
* Gère les inscription et les connexions
==== Identity pool ====
* Permet un accès temporaire à des utilisateurs ou bien des invités
* 2 type d'identités : authentifié et non authentifié
* Chaque identité a un rôle et chaque rôle à une policy attachée qui décrit les permissions
----
[[all:bibles:aws:presentation:8-security|Haut de page]]