权限示例场景 - AWS Lake Formation

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

权限示例场景

以下场景有助于演示如何设置权限以保护对 AWS Lake Formation中数据的访问。

Shirley 是一名数据管理员。她想为自己的公司建立一个数据湖, AnyCompany。目前,所有数据都存储在 Amazon S3 中。John 是一名营销经理,需要对客户购买信息(包含在 s3://customerPurchases 中)进行写入访问。今年夏天,市场分析师 Diego 加入了 John 的团队。John 需要能够授予 Diego 访问权限,以便在不涉及 Shirley 的情况下对数据执行查询。

财务部的 Mateo 需要访问查询会计数据(例如,s3://transactions)。他想查询财务团队使用的数据库 (Finance_DB) 的表中的交易数据。他的经理 Arnav 可以允许他访问 Finance_DB。尽管他不应该能够修改会计数据,但他需要能够将数据转换为适合预测的格式(架构)。此类数据将存储在他可以修改的单独存储桶 (s3://financeForecasts) 中。

总结一下:

  • Shirley 是数据湖管理员。

  • John 需要 CREATE_DATABASECREATE_TABLE 权限才能在数据目录中创建新的数据库和表。

  • 还需要对自己创建的表具有 SELECTINSERTDELETE 权限。

  • Diego 需要对表具有 SELECT 权限才能运行查询。

的员工 AnyCompany 执行以下操作来设置权限。为清楚起见,本场景中显示的 API 操作显示了简化的语法。

  1. Shirley 向 Lake Formation 注册包含客户购买信息的 Amazon S3 路径。

    RegisterResource(ResourcePath("s3://customerPurchases"), false, Role_ARN )
  2. Shirley 向 John 授予访问包含客户购买信息的 Amazon S3 路径的权限。

    GrantPermissions(John, S3Location("s3://customerPurchases"), [DATA_LOCATION_ACCESS]) )
  3. Shirley 向 John 授予创建数据库的权限。

    GrantPermissions(John, catalog, [CREATE_DATABASE])
  4. John 创建数据库 John_DB。John 自动具有对该数据库的 CREATE_TABLE 权限,因为他创建了该数据库。

    CreateDatabase(John_DB)
  5. John 创建指向 s3://customerPurchases 的表 John_Table。由于他创建了该表,因此他具有对该表的所有权限,并且可以授予对该表的权限。

    CreateTable(John_DB, John_Table)
  6. John 允许他的分析师 Diego 访问表 John_Table

    GrantPermissions(Diego, John_Table, [SELECT])
  7. John 允许他的分析师 Diego 访问 s3://customerPurchases/London/。由于 Shirley 已经注册 s3://customerPurchases,因此其子文件夹已在 Lake Formation 中注册。

    GrantDataLakePrivileges( 123456789012/datalake, Diego, [DATA_LOCATION_ACCESS], [], S3Location("s3://customerPurchases/London/") )
  8. John 允许他的分析师 Diego 在数据库 John_DB 中创建表。

    GrantDataLakePrivileges( 123456789012/datalake, Diego, John_DB, [CREATE_TABLE], [] )
  9. Diego 在 s3://customerPurchases/London/ 处的 John_DB 中创建表,并自动获取 ALTERDROPSELECTINSERTDELETE 权限。

    CreateTable( 123456789012/datalake, John_DB, Diego_Table )