开始使用 Amazon 中的标准权限模式 QLDB - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

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

开始使用 Amazon 中的标准权限模式 QLDB

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

STANDARD权限模式

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

注意

以前,分类账唯一可用的权限模式是ALLOW_ALL。该ALLOW_ALL模式允许对账本进行API级别粒度的访问控制,并且继续支持——但不建议——对账本进行访问控制。QLDB此模式允许有权对账本中由SendCommandAPI权限策略指定的任何表运行所有 PartiQL 命令的用户(因此,“允许所有” PartiQL 命令)。

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

要允许在标准模式下使用命令,您必须在中IAM为特定的表资源和 PartiQL 操作创建权限策略。这是对账本SendCommandAPI权限的补充。为了便于在此模式下使用策略,为 PartiQL 命令QLDB引入了一组IAM操作,为表引入了 Amazon 资源名称 (ARNs)。QLDB有关QLDB数据对象模型的更多信息,请参阅Amazon 中的核心概念和术语 QLDB

PartiQL 权限参考

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

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

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

  • 要在账本上运行任何 PartiQL 命令,您还必须授予账本资源的SendCommandAPI操作权限。这是对下表中列出的 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

UNDROP TABLE 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

DELETE 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

UPDATE qldb:PartiQLUpdate

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

qldb:PartiQLSelect
FROM(INSERTREMOVE、或SET)
REDACT_REVISION(存储过程) qldb:PartiQLRedact

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

SELECTFROM表名

qldb:PartiQLSelect

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

SELECTFROM信息架构.user_tables

qldb:PartiQLSelect

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

SELECTFROM历史(表名)

qldb:PartiQLHistoryFunction

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

有关授予这些 PartiQL 命令权限的IAM策略文档的示例,请继续快速入门教程:创建权限策略或参阅。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。

查找桌子(控制台)ARN
  1. 登录 AWS Management Console,然后通过 https://console.aws.amazon.com/ql db 打开亚马逊QLDB控制台。

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

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

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

为表格添加标签

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

注意

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

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

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

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

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

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

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

在创建表时标记表(控制台)
  1. 登录 AWS Management Console,然后通过 https://console.aws.amazon.com/ql db 打开亚马逊QLDB控制台。

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

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

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

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

    • 表名称-输入表名称。

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

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

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

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

本教程将指导您完成在权限模式下IAM为 Amazon QLDB 账本创建STANDARD权限策略的步骤。然后,您可以为您的用户、组或角色分配权限。

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

先决条件

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

  1. 如果您尚未执行此操作访问亚马逊 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. 复制并粘贴以下JSON政策文档。此示例策略授予对分类账中所有表的只读访问权限。

    要使用此政策,请替换 us-east-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. 选择查看策略

    注意

    您可以随时在可视化编辑器和JSON选项卡之间切换。但是,如果您进行更改或在 “可视化编辑器” 选项卡中选择 “查看策略”,则IAM可能会重构您的策略以针对可视化编辑器对其进行优化。有关更多信息,请参阅《IAM用户指南》中的策略重组

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

创建完全访问策略

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

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

    警告

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

    要使用此政策,请替换 us-east-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 或通过查询系统目录表来查找该表的information_schema.user_tables。ARN有关说明,请参阅 查找表 ID 和 ARN

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

    此示例策略仅授予对指定表只读访问权限。在此示例中,ID 为Au1EiThbt8s0z9wM26REZN。要使用此政策,请替换 us-east-1, 123456789012, myExampleLedger,以及 Au1EiThbt8s0z9wM26REZN 在示例中包含您自己的信息。

    { "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权限策略后,您可以按如下方式分配权限。

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

  • 中的用户和群组 AWS IAM Identity Center:

    创建权限集合。按照《AWS IAM Identity Center 用户指南》创建权限集的说明进行操作。

  • IAM通过身份提供商管理的用户:

    创建适用于身份联合验证的角色。按照《IAM用户指南》中为第三方身份提供商创建角色(联合)中的说明进行操作。

  • IAM用户:

    • 创建您的用户可以担任的角色。按照《用户指南》为IAM用户创建角色中的IAM说明进行操作。

    • (不推荐使用)将策略直接附加到用户或将用户添加到用户组。按照《用户指南》中向用户(控制台)添加权限中的IAM说明进行操作。