使用命名资源方法授予表权限 - AWS Lake Formation

使用命名资源方法授予表权限

您可以使用 Lake Formation 控制台或 AWS CLI 授予对数据目录表的 Lake Formation 权限。您可以授予对单个表的权限,也可以通过一次授予操作来授予对数据库中所有表的权限。

如果您授予对数据库中所有表的权限,则将隐式授予对数据库的 DESCRIBE 权限。然后,数据库将显示在控制台的数据库页面上,由 GetDatabases API 操作返回。

当您选择 SELECT 作为要授予的权限时,可以选择应用列筛选条件、行筛选条件或单元格筛选条件。

Console

以下步骤说明如何使用命名资源方法和 Lake Formation 控制台上的授予数据湖权限页面来授予表权限。该页面分为以下几个部分:

  • 主体 – 要向其授予权限的用户、角色、AWS 账户、组织或组织单位。

  • LF 标签或目录资源 – 要对其授予权限的数据库、表或资源链接。

  • 权限 – 要授予的 Lake Formation 权限。

注意

要授予对表资源链接的权限,请参阅授予资源链接权限

  1. 打开“授予数据湖权限”页面。

    通过 https://console.aws.amazon.com/lakeformation/ 打开 AWS Lake Formation 控制台,然后以数据湖管理员、表创建者或已通过授予选项获得对表的权限的用户身份登录。

    请执行以下操作之一:

    • 在导航窗格的权限下,选择数据湖权限。然后选择授予

    • 在导航窗格中,选择。然后在页面上选择一个表,并在操作菜单的权限下选择授予

    注意

    您可以通过表的资源链接授予对表的权限。为此,在页面上选择一个资源链接,然后在操作菜单上选择对目标的授权。有关更多信息,请参阅 资源链接在 Lake Formation 中的工作原理

  2. 接下来,在主体部分中,选择主体类型,然后指定要向其授予权限的主体。

    “主体”部分包含以下文本中命名的三个磁贴。每个磁贴都包含一个选项按钮和文本。“IAM Identity Center 用户和组”磁贴处于选中状态,“IAM 用户和组”下拉列表位于磁贴下方。
    IAM 用户和角色

    IAM 用户和角色列表中选择一个或多个用户或角色。

    IAM Identity Center

    用户和组列表中选择一个或多个用户或组。

    SAML 用户和组

    对于 SAML 和 Amazon QuickSight 用户和组,为通过 SAML 联合的用户或组输入一个或多个 Amazon 资源名称 (ARN),或者为 Amazon QuickSight 用户或组输入 ARN。在每个 ARN 后按 Enter。

    有关如何构建 ARN 的信息,请参阅 Lake Formation 授予和撤销 AWS CLI 命令

    注意

    只有 Amazon QuickSight 企业版支持 Lake Formation 与 Amazon QuickSight 的集成。

    外部账户

    对于 AWS 账户、AWS OrganizationsIAM 主体,为 IAM 用户或角色输入一个或多个有效的 AWS 账户 ID、组织 ID、组织单位 ID 或 ARN。在每个 ID 后按 Enter

    组织 ID 由“o-”后跟 10 到 32 个小写字母或数字组成。

    单位 ID 以“ou-”开头,后跟 4 到 32 个小写字母或数字(包含 OU 的根的 ID)。该字符串后跟第二个“-”字符和 8 到 32 个额外的小写字母或数字。

  3. LF 标签或目录资源部分中,选择一个数据库。然后选择一个或多个表或所有表

    “LF 标签或目录资源”部分包含两个水平排列的磁贴,其中每个磁贴包含一个选项按钮和描述性文本。选项包括“通过 LF 标签匹配的资源”和“命名数据目录资源”。“命名数据目录资源”处于选中状态。磁贴下方是两个下拉列表:“数据库”和“表”。“数据库”下拉列表下方有一个磁贴,其中包含所选数据库名称。“表”下拉列表下方有一个磁贴,其中包含所选表名称。
  4. 指定权限(无数据筛选)

    权限部分中,选择要授予的表权限,也可以选择可授予的权限。

    表和列权限部分包含两个子部分:“表权限”和“可授予的权限”。每个子部分都有一个复选框,对应每种可能的 Lake Formation 权限:Alter、Insert、Drop、Delete、Select、Describe 和 Super。Super 权限位于其他权限的右侧,其描述为:“此权限允许主体向左侧授予任何权限,并取代这些可授予的权限。”

    如果授予 Select 权限,则数据权限部分将显示在表和列权限部分下方,其中所有数据访问选项默认处于选中状态。接受默认设置。

    该部分包含三个水平排列的磁贴,其中每个磁贴有一个选项按钮和描述。选项按钮包括“所有数据访问”(已选择)、“基于列的简单访问”和“高级单元格级筛选条件”。
  5. 选择授予

  6. 通过数据筛选指定 Select 权限

    选择 Select 权限。不要选择任何其他权限。

    数据权限部分将显示在表和列权限部分下方。

  7. 请执行以下操作之一:

    • 仅应用简单列筛选。

      1. 选择基于列的简单访问

        顶部是“表和列权限”部分,如前面的屏幕截图所示。该部分包含表权限和可授予的权限对应的复选框。底部“数据权限”有三个水平排列的磁贴,其中每个磁贴有一个选项按钮和描述。选项按钮包括“所有数据访问”、“基于列的简单访问”和“高级单元格级筛选条件”。“基于列的简单访问”选项处于选中状态。磁贴下方是一个选项按钮组,其标签为“选择权限筛选条件”。选项包括“包括列”和“排除列”。选项组下方是“选择列”下拉列表,该下拉列表下方是“可授予的权限”子部分,其中包含一个标有“Select”的复选框。
      2. 选择是包括还是排除列,然后选择要包括或排除的列。

        向外部 AWS 账户或组织授予权限时,仅支持包括列表。

      3. (可选)在可授予的权限下,开启“Select”权限的授予选项。

        如果包括授予选项,则授予接收人只能授予对您授予给他们的列的权限。

      注意

      您也可以通过创建指定列筛选条件并将所有行指定为行筛选条件的数据筛选条件来应用列筛选。但是,这需要更多的步骤。

    • 应用列、行或单元格筛选。

      1. 选择高级单元格级筛选条件

        此部分标题为“数据权限”,位于“表权限”部分下方。它有三个水平排列的磁贴,其中每个磁贴有一个选项按钮和描述。选项按钮包括“所有数据访问”、“基于列的简单访问”和“高级单元格级筛选条件”。“高级单元格级筛选条件”选项处于选中状态。磁贴下方是“查看现有权限”标签,左侧有一个曝光三角形。现有权限不会显示出来。接着是标题为“要授予权限的数据筛选条件”的部分。标题右侧有三个按钮:“刷新”、“管理筛选条件”和“创建新筛选条件”。标题和按钮下方是一个文本字段,其中包含占位符文本“查找过滤器”。该文本字段下面是现有过滤条件的表。每行左侧都有一个复选框。列标题分别是“筛选条件名称”、“表”、“数据库” 和 “表目录 ID”。表中有两行。第一行中的筛选条件名称是 restrict-pharma。第二行中的筛选条件名称是 no-pharma。
      2. (可选)展开查看现有权限

      3. (可选)选择创建新筛选条件

      4. (可选)要查看列出的筛选条件的详细信息,或者要创建新筛选条件或删除现有筛选条件,请选择管理筛选条件

        此时将在新的浏览器窗口中打开数据筛选条件页面。

        完成数据筛选条件页面上完成操作后,返回到授予权限页面,如有必要,请刷新该页面以查看创建的任何新的数据筛选条件。

      5. 选择一个或多个要应用于授予的数据筛选条件。

        注意

        如果列表中没有数据筛选条件,则表示未为所选表创建任何数据筛选条件。

  8. 选择授权

AWS CLI

您可以使用命名资源方法和 AWS Command Line Interface (AWS CLI) 来授予表权限。

使用 AWS CLI 授予表权限
  • 运行 grant-permissions 命令并指定表作为资源。

例 – 对单个表授予权限 - 无筛选

以下示例向 AWS 账户 1111-2222-3333 中的用户 datalake_user1 授予对数据库 retail 中表 inventorySELECTALTER 权限。

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
注意

如果您授予对其基础数据位于注册位置的表的 ALTER 权限,请确保还向主体授予对该位置的数据位置权限。有关更多信息,请参阅 授予数据位置权限

例 – 使用“授予”选项对所有表授予权限 - 无筛选

下一个示例使用授予选项授予对数据库 retail 中所有表的 SELECT 权限。

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --permissions-with-grant-option "SELECT" --resource '{ "Table": { "DatabaseName": "retail", "TableWildcard": {} } }'
例 – 通过简单列筛选授予权限

下一个示例授予对表 persons 中一部分列的 SELECT 权限。它使用简单列筛选。

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "TableWithColumns": {"DatabaseName":"hr", "Name":"persons", "ColumnNames":["family_name", "given_name", "gender"]}}'
例 – 使用数据筛选条件授予权限

此示例授予对 orders 表的 SELECT 权限并应用 restrict-pharma 数据筛选条件。

aws lakeformation grant-permissions --cli-input-json file://grant-params.json

以下是 grant-params.json 文件的内容。

{ "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"}, "Resource": { "DataCellsFilter": { "TableCatalogId": "111122223333", "DatabaseName": "sales", "TableName": "orders", "Name": "restrict-pharma" } }, "Permissions": ["SELECT"], "PermissionsWithGrantOption": ["SELECT"] }