请参阅《Amazon QLDB 开发人员》中的标准权限模式入门 - Amazon Quantum Ledger Database (Amazon QLDB)

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

请参阅《Amazon QLDB 开发人员》中的标准权限模式入门

使用此部分来开始使用 Amazon QLDB 中的标准权限模式。该部分提供了一个参考表,帮助您编写 QLDB 中 PartiQL 操作和表资源的基于身份的策略 AWS Identity and Access Management (IAM)。它还包括在 IAM 中创建权限策略的 step-by-step 教程,以及在 QLDB 中查找表 ARN 和创建表标签的说明。

STANDARD权限模式

Amazon QLDB 现在支持分类账资源STANDARD权限模式。:(推荐)一种权限模式,可以对分类账、表格和 PartiQL 命令进行更精细粒度的访问控制。默认情况下,此模式拒绝所有用户请求在此分类账中的任何表上运行任何 PartiQL 命令。

注意

以前,分类账唯一可用的权限模式是ALLOW_ALLALLOW_ALL模式​​启用了对分类账的 API 级细粒度访问控制,并继续支持 QLDB 分类账,但不建议使用。此模式允许拥有 SendCommand API 权限的用户在分类账中指定的任何表上运行所有 PartiQL 命令(因此,“全部允许”PartiQL 命令)。

您可以将现有分类账的权限模式从ALLOW_ALL更改为STANDARD。有关信息,请参阅 迁移至标准权限模式

要允许在标准模式下使用命令,您必须在 IAM 中为特定的表资源和 PartiQL 操作创建权限策略。这是对分类账的 SendCommand API 权限的补充。为了简化这种模式下的策略,QLDB 为 PartiQL 命令引入了一组 IAM 操作,为 QLDB 表引入了一组 Amazon 资源名称(ARN)。有关 QLDB 数据对象模型的详细信息,请参阅 Amazon QLDB 中的核心概念和术语

PartiQL 权限参考

下表列出了每个 QLDB PartiQL 命令、您必须授予权限才能执行该命令的相应的 IAM 操作, AWS 以及您可以授予权限的资源。您可以在策略的 Action 字段中指定这些操作,并在策略的 Resource 字段中指定资源值。

重要
  • 向这些 PartiQL 命令授予权限的 IAM policy 仅适用于您的分类账,前提是该分类账已分配 STANDARD 权限模式。此类策略不适用于ALLOW_ALL权限模式下的分类账。

    要了解在创建或更新分类账时如何指定权限模式,请参阅控制台入门中的​​ Amazon QLDB 分类账的基本操作 或​ 第 1 步:创建新分类账​。

  • 要在分类账上运行任何 PartiQL 命令,您还必须授予分类账资源的 SendCommand API 操作权限。这是对下表中列出的 PartiQL 操作和表资源的补充。有关更多信息,请参阅 正在运行数据事务

Amazon QLDB partiQL 命令和所需权限
命令 所需权限(IAM 操作) 资源 相关操作
CREATE TABLE qldb:PartiQLCreateTable

arn:aws:qldb:region:account-id:ledger/ledger-name/table/*

qldb:TagResource(用于在创建时添加标签)
DROP TABLE qldb:PartiQLDropTable

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

取消删除表 qldb:PartiQLUndropTable

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

CREATE INDEX qldb:PartiQLCreateIndex

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

DROP INDEX qldb:PartiQLDropIndex

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

删除 qldb:PartiQLDelete

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

qldb:PartiQLSelect
FROM-REMOVE(适用于整个文档)
INSERT qldb:PartiQLInsert

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

更新 qldb:PartiQLUpdate

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

qldb:PartiQLSelect
FROM(插入、删除或设置)
REDACT_REVISION(存储过程) qldb:PartiQLRedact

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

SELECT FROM table_name

qldb:PartiQLSelect

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

SELECT FROM information_schema.user_tables

qldb:PartiQLSelect

arn:aws:qldb:region:account-id:ledger/ledger-name/information_schema/user_tables

SELECT FROM history(table_name)

qldb:PartiQLHistoryFunction

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

有关授予这些 PartiQL 命令权限的 IAM policy 策略文档的示例,请继续 快速入门教程:创建权限策略 或参阅 Amazon QLDB 基于身份的策略示例

查找表 ID 和 ARN

您可以使用 AWS Management Console 或通过查询表信息_schema.user_ tables 来查找表 ID。要在控制台上查看表的详细信息或查询此系统目录表,您必须拥有系统目录资源的 SELECT 权限。例如,要查找表的 Vehicle 表 ID,可以运行以下语句。

SELECT * FROM information_schema.user_tables WHERE name = 'Vehicle'

此查询以类似于以下示例的格式返回结果。

{ tableId: "Au1EiThbt8s0z9wM26REZN", name: "Vehicle", indexes: [ { indexId: "Djg2nt0yIs2GY0T29Kud1z", expr: "[VIN]", status: "ONLINE" }, { indexId: "4tPW3fUhaVhDinRgKRLhGU", expr: "[LicensePlateNumber]", status: "BUILDING" } ], status: "ACTIVE" }

要授予在表上运行 PartiQL 语句的权限,你需按以下 ARN 格式指定表资源。

arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/table/${table-id}

以下是表 ID 的表 ARN 示例。Au1EiThbt8s0z9wM26REZN

arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/Au1EiThbt8s0z9wM26REZN

您还可以使用 QLDB 控制台创建表。

查找表的 ARN(控制台)
  1. 登录并打开亚马逊 QLDB 控制台,网址为 https://console.aws.amazon.com/qldb。 AWS Management Console

  2. 在导航窗格中,选择分类账

  3. 分类帐列表中,选择要查找其表 ARN 的分类帐名称。

  4. 在分类账详情页面的表格选项卡下,找到要查找其 ARN 的表名。要复制 ARN,请选择其旁边的复制图标( Copy icon. )。

为表格添加标签

现在您可以标记您的资源。要管理现有表的标签,请使用 AWS Management Console 或 API 操作TagResourceUntagResource、和ListTagsForResource。有关更多信息,请参阅 为 Amazon QLDB 资源贴标签

注意

表资源不会继承其根分类账资源的标签。

目前,只有 STANDARD 权限模式分类账支持在创建时对表格进行标记。

您还可以在创建表时使用 QLDB 控制台或在 CREATE TABLE PartiQL 语句中指定表标签来定义表标签。下面的示例创建了一个名为 Vehicle 的表,带有标签 environment=production

CREATE TABLE Vehicle WITH (aws_tags = `{'environment': 'production'}`)

在创建时为表添加标签,需要同时访问 qldb:PartiQLCreateTableqldb:TagResource 操作。

通过在创建资源时对其进行标记,无需在创建资源后运行自定义标记脚本。标记表后,您可根据这些标签来控制对表的访问。例如:您只能向具有特定标签的表授予完全访问权限。有关 JSON 策略示例,请参阅 基于表格标签对所有操作的完全访问权限

您还可以在创建表格时使用 QLDB 控制台来定义表格标签。

在创建表时标记表(控制台)
  1. 登录并打开亚马逊 QLDB 控制台,网址为 https://console.aws.amazon.com/qldb。 AWS Management Console

  2. 在导航窗格中,选择分类账

  3. 分类帐列表中,选择要在其中创建表格的分类帐名称。

  4. 在分类账详细信息页面的表格选项卡下,选择创建表格

  5. 创建 DynamoDB 表页面,执行以下操作:

    • 表名称-输入表名称。

    • 标签 — 以键值对形式附加标签来向表添加元数据。Tags(标签)– 您可以将标签添加到任务,帮助您组织和识别它们。

      选择添加标签,然后根据需要输入任何键值对。

  6. 根据需要进行设置后,选择 Create table(创建表)

快速入门教程:创建权限策略

这个教程将引导您完成在 IAM 中为 Amazon QLDB 分类账创建权限策略的步骤,该分类账处于 STANDARD ​​权限模式。然后,您可以为您的用户、组或角色分配权限。

有关授予 PartiQL 命令和表资源权限的 IAM policy 策略文档的更多示例,请参阅 Amazon QLDB 基于身份的策略示例

先决条件

在开始之前,请务必执行以下操作:

  1. 如果您尚未执行此操作访问 Amazon QLDB,请按照中的 AWS 设置说明进行操作。这些步骤包括注册 AWS 和创建管理用户。

  2. 创建新分类账并为该分类账选择 STANDARD 权限模式。要了解操作方法,请参阅控制台入门中的 第 1 步:创建新分类账Amazon QLDB 分类账的基本操作

创建只读策略

要使用 JSON 策略编辑器在标准权限模式下为分类账中的所有表格创建只读策略,请执行以下操作:

  1. 登录 AWS Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在左侧的导航栏中,选择 Policies(策略)

    如果这是您首次选择 Policies,则会显示 Welcome to Managed Policies 页面。选择开始使用

  3. 在页面的顶部,选择 Create Policy(创建策略)

  4. 请选择 JSON 选项卡。

  5. 对于 Policy Document,复制并粘贴以下文本。此示例策略授予对分类账中所有表的只读访问权限。

    要使用此政策,请将 us-ea st-1 123456789012 和示例中的信息替换为你自己的信息。myExampleLedger

    { "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLReadOnlyPermissions", "Effect": "Allow", "Action": [ "qldb:PartiQLSelect", "qldb:PartiQLHistoryFunction" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/*", "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/information_schema/user_tables" ] } ] }
  6. 选择Review policy(查看策略)

    注意

    您可以随时在可视化编辑器JSON 选项卡之间切换。不过,如果您进行更改或在可视化编辑器选项卡中选择 Review policy(查看策略),IAM 可能会调整您的策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅《IAM 用户指南》中的调整策略结构

  7. Review policy(查看策略)页面上,为创建的策略输入 Name(名称)Description(说明)(可选)。查看策略摘要以查看您的策略授予的权限。然后,选择创建策略以保存您的工作。

创建完全访问策略

要在标准权限模式下为 QLDB 分类账中的所有表创建完全访问策略,请执行以下操作:

  • 使用以下策略文件重复前面的步骤。这个示例策略通过使用通配符(*)覆盖分类账下的所有 PartiQL 操作和所有资源,授予对分类账中所有表所有 PartiQL 命令的访问权。

    警告

    这是使用通配符(*)允许全部 PartiQL 操作的示例,包括对 QLDB 分类账中的所有表的管理和读/写操作。相反,最佳实践是明确指定要授予的每个操作以及仅指定该用户、角色或组需要的操作。

    要使用此政策,请将 us-ea st-1 123456789012 和示例中的信息替换为你自己的信息。myExampleLedger

    { "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLFullPermissions", "Effect": "Allow", "Action": [ "qldb:PartiQL*" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/*", "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/information_schema/user_tables" ] } ] }

为特定表创建只读策略

要在标准权限模式下为 QLDB 分类账中的特定表创建只读访问策略,请执行以下操作:

  1. 使用 AWS Management Console 或通过查询系统目录表来查找该表的 ARN。information_schema.user_tables有关说明,请参阅 查找表 ID 和 ARN

  2. 使用表 ARN 创建策略,允许对表进行只读访问。为此,请使用以下策略文档重复前面的步骤

    此示例策略仅授予对指定表只读访问权限。在此示例中,ID 为Au1EiThbt8s0z9wM26REZN要使用此政策,请用您自己的信息替换示例中的 us-east-1 123456789012 和 Au1 8s0z9wm26Rez myExampleLedgern。EiThbt

    { "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLReadOnlyPermissions", "Effect": "Allow", "Action": [ "qldb:PartiQLSelect", "qldb:PartiQLHistoryFunction" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/Au1EiThbt8s0z9wM26REZN" ] } ] }

分配权限

创建 QLDB 权限策略后,您可以按如下方式分配权限。

要提供访问权限,请为您的用户、组或角色添加权限: