Cette page a été traduite de l'anglais avec l'aide de l'IA. En cas de divergence, la version anglaise fait référence.
Utiliser StackQL dans AWS Cloud Shell
Dans ce guide, nous montrons comment utiliser StackQL, un outil de développement puissant qui permet d'interroger et de déployer l'infrastructure et les ressources cloud à l'aide de la syntaxe SQL, depuis AWS Cloud Shell, avec le contexte utilisateur de la session de connexion à la console AWS ou en assumant un autre rôle IAM.
Testé avec backend SQL embarqué linux
Qu'est-ce qu'AWS Cloud Shell ?
AWS Cloud Shell est un service de shell préauthentifié, accessible depuis le navigateur, fourni par Amazon Web Services (AWS). Il permet aux développeurs et aux professionnels de l'informatique de gérer leurs ressources cloud directement depuis leur navigateur web. Avec AWS Cloud Shell, les utilisateurs peuvent exécuter rapidement des commandes liées aux services AWS sans installer ni configurer l'AWS CLI (Command Line Interface) sur leur machine locale. Ce service fournit un environnement prêt à l'emploi dans lequel les outils courants de développement et de gestion sont préinstallés, comme l'AWS CLI, Python, Node.js et d'autres, ce qui facilite l'interaction avec les services AWS et l'automatisation des tâches. AWS Cloud Shell est directement intégré à l'AWS Management Console et offre une expérience fluide pour exécuter des tâches d'administration, explorer les services AWS et gérer l'infrastructure. Comme AWS Cloud Shell authentifie automatiquement les utilisateurs par leur connexion à la console AWS, il simplifie l'exécution de commandes et de scripts dans le contexte de leur compte AWS, ce qui améliore la productivité et l'efficacité des opérations cloud.
Fonctionnement
Le paquet Linux de StackQL comprend des scripts permettant d'utiliser stackql directement dans les environnements cloud shell intégrés des principaux fournisseurs cloud. Pour AWS, le script est stackql-aws-cloud-shell.sh. L'utilisation du script stackql-aws-cloud-shell.sh est présentée ici :
Usage:
./stackql-aws-cloud-shell.sh [--role-arn ARN] [shell | exec] [flags]
--role-arn (optional)
If supplied, the program will assume the role specified;
if not, then the current user context in the cloud shell will be used.
Command (optional):
'shell' (default) enters the StackQL command shell to execute queries interactively.
'exec' is used to execute StackQL queries or files to provide batch outputs
(such as CSV or JSON output files). If not specified, 'shell' is assumed.
Flags:
optional StackQL flags, documented in Command Line Usage -> Global Flags
Le script stackql-aws-cloud-shell.sh télécharge automatiquement la dernière version du provider AWS pour StackQL. Le code source des scripts cloud shell inclus se trouve sur github.com/stackql/cloud-shell-scripts.
Télécharger le paquet Linux stackql depuis AWS Cloud Shell
Pour commencer, depuis AWS Cloud Shell, téléchargez le dernier binaire Linux de StackQL à l'aide des commandes suivantes :
curl -L https://bit.ly/stackql-zip -O \
&& unzip stackql-zip
Ces commandes téléchargent et extraient le binaire stackql ainsi que le script stackql-aws-cloud-shell.sh dans le répertoire personnel de votre environnement AWS Cloud Shell. Tout est maintenant prêt !
Utiliser stackql shell depuis AWS Cloud Shell
Pour lancer un shell de commandes StackQL authentifié depuis AWS Cloud Shell, il suffit d'exécuter :
sh stackql-aws-cloud-shell.sh
Vous pouvez maintenant exécuter des requêtes AWS interactives en SQL à l'aide du provider StackQL, comme illustré ici :
Assumer un rôle IAM avec StackQL
Assumer un rôle IAM dans AWS vous permet d'effectuer des actions et d'accéder à des ressources auxquelles les permissions par défaut de votre utilisateur ne donnent pas forcément accès. C'est particulièrement utile lorsque vous avez besoin d'un accès temporaire à des ressources ou que vous devez effectuer des actions avec des permissions différentes de celles de votre compte principal. Avec StackQL, vous pouvez assumer un rôle IAM de façon transparente pour interroger et gérer des ressources AWS avec les permissions accordées par ce rôle.
Comprendre ce que signifie assumer un rôle IAM
Assumer un rôle IAM est un moyen sûr d'accorder un accès temporaire à des ressources AWS. Lorsque vous assumez un rôle, AWS STS vous fournit des identifiants de sécurité temporaires qui vous permettent d'accéder aux services et aux ressources AWS que le rôle est autorisé à utiliser. Ce mécanisme est idéal pour l'accès intercompte, l'accès temporaire d'utilisateurs ou le respect du principe du moindre privilège.
Les rôles peuvent être assumés avec l'AWS Management Console ou l'AWS CLI, et directement dans StackQL. Les utilisateurs et les applications ne disposent ainsi que des permissions nécessaires pendant la durée requise, ce qui renforce la posture de sécurité de votre environnement AWS.
Pour assumer un rôle IAM avec StackQL dans AWS Cloud Shell, vous pouvez utiliser l'option --role-arn avec le script stackql-aws-cloud-shell.sh. Cette option requiert l'Amazon Resource Name (ARN) du rôle que vous souhaitez assumer. Lorsqu'elle est fournie, StackQL utilise AWS Security Token Service (STS) pour assumer le rôle indiqué avant d'exécuter toute requête ou commande.
sh stackql-aws-cloud-shell.sh --role-arn arn:aws:iam::123456789012:role/YourRoleName
En assumant un rôle, vous pouvez utiliser StackQL pour interagir avec des ressources AWS auxquelles votre utilisateur par défaut n'a pas forcément accès, ce qui permet de gérer votre environnement cloud de manière plus souple et plus sûre.
Lorsque vous exécutez des commandes ou des scripts StackQL avec un rôle IAM assumé, assurez-vous que le rôle dispose des permissions nécessaires pour effectuer les actions voulues et accéder aux ressources indiquées. Cette approche facilite un contrôle d'accès granulaire et s'aligne sur les bonnes pratiques AWS en matière de sécurité et de gouvernance.
Exécuter stackql exec (opérations par lots) depuis AWS Cloud Shell
Les requêtes StackQL peuvent aussi être exécutées avec la commande exec ; c'est une option utile pour :
- indiquer d'autres formats de sortie comme
jsonoucsv - produire des fichiers de sortie pour les résultats des requêtes StackQL
- utiliser des requêtes StackQL fournies dans des fichiers d'entrée (fichiers
.iqlpar convention) - effectuer des opérations complexes, notamment charger des variables ou prétraiter des requêtes (avec
jsonoujsonnet)
Des exemples d'utilisation de exec dans AWS Cloud Shell sont présentés ici :
sh stackql-aws-cloud-shell.sh exec \
--output csv --outfile instances.csv \
"SELECT region, instanceType FROM aws.ec2.instances WHERE region IN ('us-east-1')"
L'exemple ci-dessus exécute la requête StackQL indiquée et produit un fichier de sortie CSV, qui peut être téléchargé depuis AWS Cloud Shell. Vous pouvez en outre fournir un rôle IAM avec l'argument --role-arn afin d'assumer un autre rôle pour votre requête ou votre opération de mutation ; un exemple est présenté ici (dans ce cas, la requête provient d'un fichier d'entrée) :
sh stackql-aws-cloud-shell.sh \
--role-arn arn:aws:iam::824532806693:role/SecurityReviewerRole exec \
--infile query.iql \
--output csv --outfile output.csv
Vous trouverez plus d'informations sur la commande exec ici