Bloquez l'accès public à Amazon RDS à l'aide de Cloud Custodian - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Bloquez l'accès public à Amazon RDS à l'aide de Cloud Custodian

Créée par Abhay Kumar (AWS) et Dwarika Patra (AWS)

Environnement : Production

Technologies : bases de données ; sécurité, identité, conformité

Charge de travail : toutes les autres charges de travail ; open source

Services AWS : Amazon RDS

Récapitulatif

De nombreuses entreprises exécutent leurs charges de travail et leurs services auprès de plusieurs fournisseurs de cloud. Dans ces environnements de cloud hybride, l'infrastructure cloud nécessite une gouvernance cloud stricte, en plus de la sécurité fournie par les différents fournisseurs de cloud. Une base de données cloud telle qu'Amazon Relational Database Service (Amazon RDS) est un service important qui doit être surveillé pour détecter toute vulnérabilité en matière d'accès et d'autorisation. Bien que vous puissiez restreindre l'accès à la base de données Amazon RDS en configurant un groupe de sécurité, vous pouvez ajouter une deuxième couche de protection pour interdire des actions telles que l'accès public. Garantir le blocage de l'accès public vous aidera à vous conformer au règlement général sur la protection des données (RGPD), à la Health Insurance Portability and Accountability Act (HIPAA), au National Institute of Standards and Technology (NIST) et à la norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS).

Cloud Custodian est un moteur de règles open source que vous pouvez utiliser pour appliquer des restrictions d'accès aux ressources Amazon Web Services (AWS) telles qu'Amazon RDS. Avec Cloud Custodian, vous pouvez définir des règles qui valident l'environnement par rapport aux normes de sécurité et de conformité définies. Vous pouvez utiliser Cloud Custodian pour gérer vos environnements cloud en garantissant le respect des politiques de sécurité, des politiques en matière de balises, la collecte des ressources inutilisées et la gestion des coûts. Avec Cloud Custodian, vous pouvez utiliser une interface unique pour mettre en œuvre la gouvernance dans un environnement cloud hybride. Par exemple, vous pouvez utiliser l'interface Cloud Custodian pour interagir avec AWS et Microsoft Azure, réduisant ainsi les efforts liés à l'utilisation de mécanismes tels qu'AWS Config, les groupes de sécurité AWS et les politiques Azure.

Ce modèle fournit des instructions pour utiliser Cloud Custodian sur AWS afin de restreindre l'accessibilité publique aux instances Amazon RDS.

Conditions préalables et limitations

Prérequis

Architecture

Pile technologique cible

  • Amazon RDS

  • AWS CloudTrail

  • AWS Lambda

  • Cloud Custodian

Architecture cible

Le schéma suivant montre Cloud Custodian déployant la politique sur Lambda, CloudTrail AWS initiant CreateDBInstance l'événement et définissant la fonction Lambda sur false sur Amazon PubliclyAccessible RDS.

Utilisation de Cloud Custodian sur AWS pour restreindre l'accès public aux instances Amazon RDS.

Outils

Services AWS

  • AWS vous CloudTrail aide à auditer la gouvernance, la conformité et le risque opérationnel de votre compte AWS.

  • L'interface de ligne de commande AWS (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • Amazon Relational Database Service (Amazon RDS) vous aide à configurer, exploiter et dimensionner une base de données relationnelle dans le cloud AWS.

Autres outils

  • Cloud Custodian unifie les outils et les scripts utilisés par de nombreuses entreprises pour gérer leurs comptes de cloud public en un seul outil open source. Il utilise un moteur de règles sans état pour la définition et l'application des politiques, avec des métriques, des résultats structurés et des rapports détaillés pour l'infrastructure cloud. Il s'intègre étroitement à un environnement d'exécution sans serveur pour fournir une correction et une réponse en temps réel avec une faible charge opérationnelle.

Épopées

TâcheDescriptionCompétences requises

Installez AWS CLI.

Pour installer l'AWS CLI, suivez les instructions de la documentation AWS.

Administrateur AWS

Configurez les informations d'identification AWS.

Configurez les paramètres utilisés par l'AWS CLI pour interagir avec AWS, notamment la région AWS et le format de sortie que vous souhaitez utiliser.

$>aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: <your_secret_access_key> Default region name [None]: Default output format [None]:

Pour plus d'informations, consultez la documentation AWS.

Administrateur AWS

Créez un rôle IAM.

Pour créer un rôle IAM avec le rôle d'exécution Lambda, exécutez la commande suivante.

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}
AWS DevOps
TâcheDescriptionCompétences requises

Installez Cloud Custodian.

Pour installer Cloud Custodian pour votre système d'exploitation et votre environnement, suivez les instructions de la documentation Cloud Custodian.

DevOps ingénieur

Vérifiez le schéma Cloud Custodian.

Pour consulter la liste complète des ressources Amazon RDS sur lesquelles vous pouvez exécuter des politiques, utilisez la commande suivante.

custodian schema aws.rds
DevOps ingénieur

Créez la politique Cloud Custodian.

Enregistrez le code qui se trouve sous le fichier de politique Cloud Custodian dans la section Informations supplémentaires à l'aide d'une extension YAML.

DevOps ingénieur

Définissez les actions du Cloud Custodian pour modifier le drapeau accessible au public.

  1. Localisez le code du dépositaire (par exemple,/Users/abcd/custodian/lib/python3.9/site-packages/c7n/resources/rds.py).

  2. Localisez la RDSSetPublicAvailability classe et modifiez-la en rds.py utilisant le code qui se trouve sous le fichier c7n resources rds.py dans la section Informations supplémentaires.

DevOps ingénieur

Effectuez un essai à sec.

(Facultatif) Pour vérifier quelles ressources sont identifiées par la politique sans exécuter aucune action sur les ressources, utilisez la commande suivante.

custodian run -dryrun <policy_name>.yaml -s <output_directory>
DevOps ingénieur
TâcheDescriptionCompétences requises

Déployez la politique à l'aide de Lambda.

Pour créer la fonction Lambda qui exécutera la politique, utilisez la commande suivante.

custodian run -s policy.yaml

Cette politique sera ensuite initiée par l' CloudTrail CreateDBInstanceévénement AWS.

Par conséquent, AWS Lambda définira l'indicateur accessible au public sur false pour les instances qui répondent aux critères.

DevOps ingénieur

Ressources connexes

Informations supplémentaires

Fichier YAML de politique Cloud Custodian

policies: - name: "block-public-access" resource: rds description: | This Enforcement blocks public access for RDS instances. mode: type: cloudtrail events: - event: CreateDBInstance # Create RDS instance cloudtrail event source: rds.amazonaws.com ids: requestParameters.dBInstanceIdentifier role: arn:aws:iam::1234567890:role/Custodian-compliance-role filters: - type: event key: 'detail.requestParameters.publiclyAccessible' value: true actions: - type: set-public-access state: false

fichier rds.py de ressources c7n

@actions.register('set-public-access') class RDSSetPublicAvailability(BaseAction): schema = type_schema( "set-public-access", state={'type': 'boolean'}) permissions = ('rds:ModifyDBInstance',) def set_accessibility(self, r): client = local_session(self.manager.session_factory).client('rds') waiter = client.get_waiter('db_instance_available') waiter.wait(DBInstanceIdentifier=r['DBInstanceIdentifier']) client.modify_db_instance( DBInstanceIdentifier=r['DBInstanceIdentifier'], PubliclyAccessible=self.data.get('state', False)) def process(self, rds): with self.executor_factory(max_workers=2) as w: futures = {w.submit(self.set_accessibility, r): r for r in rds} for f in as_completed(futures): if f.exception(): self.log.error( "Exception setting public access on %s \n %s", futures[f]['DBInstanceIdentifier'], f.exception()) return rds

Intégration au Security Hub

Cloud Custodian peut être intégré à AWS Security Hub pour envoyer des résultats de sécurité et tenter de prendre des mesures correctives. Pour plus d'informations, consultez Annonce de l'intégration de Cloud Custodian à AWS Security Hub.