适用于 Amazon OpenSearch Serverless 的身份和访问管理 - 亚马逊 OpenSearch 服务

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

适用于 Amazon OpenSearch Serverless 的身份和访问管理

AWS Identity and Access Management (IAM) AWS 服务 可以帮助管理员安全地控制对 AWS 资源的访问权限。IAM管理员控制谁可以进行身份验证(登录)和授权(拥有权限)使用 OpenSearch 无服务器资源。IAM无需支付额外费用即可使用。 AWS 服务

无服务器基于身份的策略 OpenSearch

支持基于身份的策略:

基于身份的策略是可以附加到身份(例如IAM用户、用户组或角色)的JSON权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略,请参阅IAM用户指南中的创建IAM策略

使用IAM基于身份的策略,您可以指定允许或拒绝的操作和资源,以及允许或拒绝操作的条件。您无法在基于身份的策略中指定主体,因为它适用于其附加的用户或角色。要了解可以在JSON策略中使用的所有元素,请参阅IAM用户指南中的IAMJSON策略元素参考

无服务器基于身份的策略示例 OpenSearch

要查看基于身份的 OpenSearch 无服务器策略的示例,请参阅。无服务器基于身份的策略示例 OpenSearch

OpenSearch 无服务器的策略操作

支持策略操作:

JSON策略Action元素描述了可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 AWS API操作同名。也有一些例外,例如没有匹配API操作的仅限权限的操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为相关操作

在策略中包含操作以授予执行关联操作的权限。

OpenSearch Serverless 中的策略操作在操作前使用以下前缀:

aoss

要在单个语句中指定多项操作,请使用逗号将它们隔开。

"Action": [ "aoss:action1", "aoss:action2" ]

您可以使用通配符 (*) 指定多个操作。例如,要指定以单词 Describe 开头的所有操作,包括以下操作:

"Action": "aoss:List*"

要查看基于身份的 OpenSearch 无服务器策略的示例,请参阅。 无服务器基于身份的策略示例 OpenSearch

OpenSearch 无服务器策略资源

支持策略资源:

管理员可以使用 AWS JSON策略来指定谁有权访问什么。也就是说,哪个主体 可以对什么资源执行操作,以及在什么条件下执行。

ResourceJSON策略元素指定要应用操作的一个或多个对象。语句必须包含 ResourceNotResource 元素。最佳做法是,使用资源的 Amazon 资源名称 (ARN) 来指定资源。对于支持特定资源类型(称为资源级权限)的操作,您可以执行此操作。

对于不支持资源级权限的操作(如列出操作),请使用通配符 (*) 指示语句应用于所有资源。

"Resource": "*"

Amazon OpenSearch 无服务器的策略条件密钥

支持服务特定的策略条件键:

管理员可以使用 AWS JSON策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Condition 元素(或 Condition )中,可以指定语句生效的条件。Condition 元素是可选的。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。

如果您在一个语句中指定多个 Condition 元素,或在单个 Condition 元素中指定多个键,则 AWS 使用逻辑 AND 运算评估它们。如果您为单个条件键指定多个值,则使用逻辑OR运算来 AWS 评估条件。在授予语句的权限之前必须满足所有的条件。

在指定条件时,您也可以使用占位符变量。例如,只有在资源上标有IAM用户的用户名时,您才能向IAM用户授予访问该资源的权限。有关更多信息,请参阅《IAM用户指南》中的IAM策略元素:变量和标签

AWS 支持全局条件密钥和特定于服务的条件键。要查看所有 AWS 全局条件键,请参阅《IAM用户指南》中的AWS 全局条件上下文密钥

除了基于属性的访问控制 (ABAC) 之外, OpenSearch Serverless 还支持以下条件键:

  • aoss:collection

  • aoss:CollectionId

  • aoss:index

即使在为访问策略和安全策略提供权限时,您也可以使用这些条件键。例如:

[ { "Effect":"Allow", "Action":[ "aoss:CreateAccessPolicy", "aoss:CreateSecurityPolicy" ], "Resource":"*", "Condition":{ "StringLike":{ "aoss:collection":"log" } } } ]

在此示例中,该条件适用于此类策略:包含与集合名称或模式相匹配的规则。这些条件具有以下行为:

  • StringEquals:适用于此类策略:具有包含确切的资源字符串“log”(即 collection/log)的规则。

  • StringLike:适用于此类策略:具有包含资源字符串的规则,该资源字符串包括字符串“log”(即 collection/log,但也包括 collection/logs-applicationcollection/applogs123)。

注意

Collection(集合)条件键不适用于索引级别。例如,在上述策略中,该条件不适用于包含资源字符串 index/logs-application/* 的访问或安全策略。

要查看 OpenSearch 无服务器条件密钥列表,请参阅《服务授权参考》中的 Amazon OpenSearch Serverless 条件密钥。要了解您可以使用条件键的操作和资源,请参阅 Amazon OpenSearch Serverless 定义的操作

ABAC使用 OpenSearch 无服务器

支持ABAC(策略中的标签):

基于属性的访问控制 (ABAC) 是一种基于属性定义权限的授权策略。在中 AWS,这些属性称为标签。您可以为IAM实体(用户或角色)和许多 AWS 资源附加标签。为实体和资源添加标签是的第一步。ABAC然后,您可以设计ABAC策略,允许在委托人的标签与他们尝试访问的资源上的标签匹配时进行操作。

ABAC在快速增长的环境中很有用,也有助于解决策略管理变得繁琐的情况。

要基于标签控制访问,您需要使用 aws:ResourceTag/key-nameaws:RequestTag/key-nameaws:TagKeys 条件键在策略的条件元素中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键,则对于该服务,该值为。如果某个服务仅对于部分资源类型支持所有这三个条件键,则该值为部分

有关的更多信息ABAC,请参阅什么是ABAC? 在《IAM用户指南》中。要查看包含设置步骤的教程ABAC,请参阅IAM用户指南中的使用基于属性的访问控制 (ABAC)

有关标记 OpenSearch 无服务器资源的更多信息,请参阅。标记 Amazon OpenSearch 无服务器集合

在 OpenSearch 无服务器中使用临时证书

支持临时凭证:

当你使用临时证书登录时,有些 AWS 服务 不起作用。有关其他信息,包括哪些 AWS 服务 适用于临时证书 AWS 服务 ,请参阅《IAM用户指南》IAM中的 “适用于临时证书”。

如果您使用除用户名和密码之外的任何方法登录,则 AWS Management Console 使用的是临时证书。例如,当您 AWS 使用公司的单点登录 (SSO) 链接进行访问时,该过程会自动创建临时证书。当您以用户身份登录控制台,然后切换角色时,您还会自动创建临时凭证。有关切换角色的更多信息,请参阅《IAM用户指南》中的切换到角色(控制台)

您可以使用 AWS CLI 或手动创建临时证书 AWS API。然后,您可以使用这些临时证书进行访问 AWS。 AWS 建议您动态生成临时证书,而不是使用长期访问密钥。有关更多信息,请参阅中的临时安全证书IAM

无服务器的服务相关角色 OpenSearch

支持服务相关角色:

服务相关角色是一种链接到的服务角色。 AWS 服务服务可以代入代表您执行操作的角色。服务相关角色出现在您的中 AWS 账户 ,并且归服务所有。IAM管理员可以查看但不能编辑服务相关角色的权限。

有关创建和管理 OpenSearch 无服务器服务相关角色的详细信息,请参阅。使用服务相关角色创建 OpenSearch 无服务器集合

无服务器基于身份的策略示例 OpenSearch

默认情况下,用户和角色无权创建或修改 OpenSearch 无服务器资源。他们也无法使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或执行任务 AWS API。要授予用户对其所需资源执行操作的权限,IAM管理员可以创建IAM策略。然后,管理员可以将IAM策略添加到角色中,用户可以代入角色。

要了解如何使用这些示例策略文档创建IAM基于身份的JSON策略,请参阅IAM用户指南中的创建IAM策略

有关 Amazon OpenSearch Serverless 定义的操作和资源类型(包括每种资源类型的格式)的详细信息,请参阅《服务授权参考》中的 Amazon OpenSearch Serverless 的操作、资源和条件密钥。ARNs

策略最佳实践

基于身份的策略非常强大。它们决定是否有人可以在您的账户中创建、访问或删除 OpenSearch 无服务器资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时,请遵循以下指南和建议:

基于身份的策略决定了某人是否可以在您的账户中创建、访问或删除 OpenSearch 无服务器资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时,请遵循以下指南和建议:

  • 开始使用 AWS 托管策略并转向最低权限权限 — 要开始向用户和工作负载授予权限,请使用为许多常见用例授予权限的AWS 托管策略。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息,请参阅《IAM用户指南》中的AWS 托AWS 管策略或工作职能托管策略。

  • 应用最低权限权限-使用IAM策略设置权限时,仅授予执行任务所需的权限。为此,您可以定义在特定条件下可以对特定资源执行的操作,也称为最低权限许可。有关使用应用权限IAM的更多信息,请参阅《IAM用户指南》IAM中的策略和权限

  • 使用IAM策略中的条件进一步限制访问权限-您可以在策略中添加条件以限制对操作和资源的访问权限。例如,您可以编写一个策略条件来指定所有请求都必须使用发送SSL。如果服务操作是通过特定 AWS 服务的(例如)使用的,则也可以使用条件来授予对服务操作的访问权限 AWS CloudFormation。有关更多信息,请参阅《IAM用户指南》中的IAMJSON策略元素:条件

  • 使用 A IAM ccess Analyzer 验证您的IAM策略以确保权限的安全性和功能性 — A IAM ccess Analyzer 会验证新的和现有的策略,以便策略符合IAM策略语言 (JSON) 和IAM最佳实践。IAMAccess Analyzer 提供了 100 多项策略检查和可行的建议,可帮助您制定安全和实用的策略。有关更多信息,请参阅《IAM用户指南》中的 IAMAccess Analyzer 策略验证

  • 需要多重身份验证 (MFA)-如果您的场景需要IAM用户或 root 用户 AWS 账户,请打开MFA以提高安全性。要要求MFA何时调用API操作,请在策略中添加MFA条件。有关更多信息,请参阅《IAM用户指南》中的配置MFA受保护的API访问权限

有关中最佳做法的更多信息IAM,请参阅《IAM用户指南》IAM中的安全最佳实践

在控制台中使用 OpenSearch 无服务器

要在 OpenSearch 服务控制台中访问 OpenSearch Serverless,您必须拥有一组最低权限。这些权限必须允许您列出和查看有关您 AWS 账户中 OpenSearch 无服务器资源的详细信息。如果您创建的基于身份的策略比所需的最低权限更严格,则控制台将无法按预期运行,适用于使用该策略的实体(例如IAM角色)。

您无需为仅拨打 AWS CLI 或的用户设置最低控制台权限 AWS API。相反,只允许访问与你正在尝试执行的API操作相匹配的操作。

以下策略允许用户在 OpenSearch 服务控制台中访问 OpenSearch Serverless:

{ "Version": "2012-10-17", "Statement": [ { "Resource": "*", "Effect": "Allow", "Action": [ "aoss:ListCollections", "aoss:BatchGetCollection", "aoss:ListAccessPolicies", "aoss:ListSecurityConfigs", "aoss:ListSecurityPolicies", "aoss:ListTagsForResource", "aoss:ListVpcEndpoints", "aoss:GetAccessPolicy", "aoss:GetAccountSettings", "aoss:GetSecurityConfig", "aoss:GetSecurityPolicy" ] } ] }

管理 OpenSearch 无服务器集合

此政策是 “馆藏管理员” 策略的一个示例,该策略允许用户管理和管理 Amazon OpenSearch Serverless 馆藏。用户可以创建、查看和删除集合。

{ "Version": "2012-10-17", "Statement": [ { "Resource": "arn:aws:aoss:region:123456789012:collection/*", "Action": [ "aoss:CreateCollection", "aoss:DeleteCollection", "aoss:UpdateCollection" ], "Effect": "Allow" }, { "Resource": "*", "Action": [ "aoss:BatchGetCollection", "aoss:ListCollections", "aoss:CreateAccessPolicy", "aoss:CreateSecurityPolicy" ], "Effect": "Allow" } ] }

查看 OpenSearch 无服务器集合

此示例策略允许用户查看其账户中所有 Amazon OpenSearch Serverless 集合的详细信息。用户无法修改集合或任何相关联的安全策略。

{ "Version": "2012-10-17", "Statement": [ { "Resource": "*", "Action": [ "aoss:ListAccessPolicies", "aoss:ListCollections", "aoss:ListSecurityPolicies", "aoss:ListTagsForResource", "aoss:BatchGetCollection" ], "Effect": "Allow" } ] }

使用 OpenSearchAPI操作

数据平面API操作由你在 OpenSearch Serverless 中用来从服务中获取实时值的函数组成。控制平面API操作由用于设置环境的功能组成。

要通过浏览器访问 Amazon OpenSearch Serverless 数据平面APIs和 OpenSearch 控制面板,您需要为集合资源添加两个IAM权限。这些权限是 aoss:APIAccessAllaoss:DashboardsAccessAll

注意

从 2023 年 5 月 10 日起, OpenSearch Serverless 需要这两个新的收藏资源IAM权限。该aoss:APIAccessAll权限允许访问数据平面,该aoss:DashboardsAccessAll权限允许通过浏览器访问 OpenSearch 仪表板。未能添加这两个新IAM权限会导致 403 错误。

此示例策略允许用户访问其账户中指定集合的数据平面APIs,以及访问其账户中所有集合的 OpenSearch 控制面板。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "aoss:APIAccessAll", "Resource": "arn:aws:aoss:region:account-id:collection/collection-id" }, { "Effect": "Allow", "Action": "aoss:DashboardsAccessAll", "Resource": "arn:aws:aoss:region:account-id:dashboards/default" } ] }

两者兼而有之,aoss:APIAccessAllaoss:DashboardsAccessAllIAM授予对集合资源的完全权限,而仪表板权限还提供 OpenSearch 仪表板访问权限。每个权限都彼此独立,因此明确拒绝 aoss:APIAccessAll 不会妨碍对资源(包括开发工具)的 aoss:DashboardsAccessAll访问。拒绝 aoss:DashboardsAccessAll 也同样如此。

OpenSearch Serverless 仅支持主体数据平面调用IAM策略中的条件设置中的源 IP 地址:

"Condition": { "IpAddress": { "aws:SourceIp": "52.95.4.14" } }