Bloquez l'accès public à Amazon à l'aide RDS 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 à l'aide RDS de Cloud Custodian

Créé 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

AWSservices : 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 (RDSAmazon) 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 RDS base de données Amazon 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 (GDPR), à la loi sur la portabilité et la responsabilité de l'assurance maladie (HIPAA), au National Institute of Standards and Technology (NIST) et aux normes de sécurité des données du secteur des cartes de paiement (PCIDSS).

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 Microsoft Azure AWS et ainsi réduire les efforts liés à l'utilisation de mécanismes tels que AWS Config, les groupes AWS de sécurité et les politiques Azure.

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

Conditions préalables et limitations

Prérequis

Architecture

Pile technologique cible

  • Amazon RDS

  • AWS CloudTrail

  • AWSLambda

  • Cloud Custodian

Architecture cible

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

Utiliser Cloud Custodian activé AWS pour restreindre l'accès public aux RDS instances Amazon.

Outils

AWSservices

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

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

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

  • AWSLambda est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner 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 (RDSAmazon) vous aide à configurer, exploiter et dimensionner une base de données relationnelle dans AWS le cloud.

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 AWSCLI.

Pour l'installer AWSCLI, suivez les instructions de la AWSdocumentation.

AWSadministrateur

Configurez les AWS informations d'identification.

Configurez les paramètres avec AWS CLI lesquels les utilisateurs doivent interagirAWS, notamment la AWS région 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 AWSdocumentation.

AWSadministrateur

Créez un IAM rôle.

Pour créer un IAM rôle 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 RDS ressources Amazon sur lesquelles vous pouvez appliquer 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 YAML extension.

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'AWS CloudTrail CreateDBInstanceévénement.

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 de politique YAML 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é à AWSSecurity Hub pour envoyer les 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.