权限示例场景 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

权限示例场景

以下场景有助于演示如何设置权限以保护对 Amazon 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 )