IAM 和 Lake Formation 都是 AWS 上的权限管理服务,且默认都是自动开启并生效的,只是如果你没有特别配置过它们,可能感觉不到它们的存在,特别是Lake Formation(后文简写为 LF),通常情况下都是“透明”的,但它确实在每次请求时进行了权限检查。本文会详细介绍一下两者之间的区别和联系,特别是 Lake Formation 的作用机理。
下图能很好地解释两者之间的关系,简单讲:在AWS上,用户想要访问一项资源(这里的资源仅限 Glue Data Catalog 上的数据库、数据表和 S3,除此之外的资源并不归 LF 管理),用户需要经过两层权限检查,第一层是 IAM,如果用户的 IAM Policies 就没有访问相关库和表的元数据和S3路径的权限,会直接“出局”;如果通过了 IAM 检查,还要再由 LF 检查一遍当前用户在 LF 这一层的权限配置上有没有权访问目标资源:
很多用户会可能立即问到:IAM 我能理解,但是 LF 我从来没有配置过,它也在起作用吗?为什么我从没有被 LF 拦截过呢?要解释这个问题,就要了解一下 LF 的默认行为了。
每当我们新建数据和表时,我们都能在 LF 的 Permissions -> Data lake permissions 页面上看