本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
针对 Amazon OpenSearch 无服务器的网络访问权限
Amazon OpenSearch 无服务器集合的网络设置决定了是否可以通过互联网从公共网络访问该集合,还是必须以私有方式访问该集合。
私有访问适用于以下一种或两种情形:
-
OpenSearch 无服务器托管 VPC 端点
-
支持 AWS 服务(例如 Amazon Bedrock)
您可以为集合的 OpenSearch 端点及其相应的 OpenSearch 控制面板端点单独配置网络访问权限。
网络访问权限是允许从不同源网络进行访问的隔离机制。例如,假设集合的 OpenSearch 控制面板端点可以公开访问,但 OpenSearch API 端点不可公开访问,则在从公共网络连接时,用户只能通过控制面板访问集合数据。如果他们试图从公共网络直接调用 OpenSearch API,则会被阻止。网络设置可以用于源类型到资源类型的此类排列。Amazon OpenSearch 无服务器同时支持 IPv4 和 IPv6 连接。
网络策略
网络策略使您能够通过为符合策略中定义的规则的集合自动分配网络访问权限设置,从而大规模管理许多集合。
在网络策略中,您可以指定一系列规则。这些规则定义针对集合端点和 OpenSearch 控制面板端点的访问权限。每条规则都由访问权限类型(公有或私有)和资源类型(集合和/或 OpenSearch 控制面板端点)组成。对于每种资源类型(collection
和 dashboard
),您可以指定一系列规则,用于定义策略将适用于哪些集合。
在此示例策略中,第一条规则针对以 marketing*
一词开头的所有集合,指定了对集合端点和控制面板端点的 VPC 端点访问权限。此外还指定了 Amazon Bedrock 访问权限。
注意
授予 Amazon Bedrock 等 AWS 服务的私有访问权限仅适用于集合的 OpenSearch 端点,不适用于 OpenSearch 控制面板端点。即使 ResourceType
为 dashboard
,也无法向 AWS 服务 授予对 OpenSearch 控制面板的访问权限。
第二条规则指定针对 finance
集合的公共访问权限,但仅适用于集合端点(无控制面板访问权限)。
[ { "Description":"Marketing access", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/
marketing*
" ] }, { "ResourceType":"dashboard", "Resource":[ "collection/marketing*
" ] } ], "AllowFromPublic":false, "SourceVPCEs":[ "vpce-050f79086ee71ac05
" ], "SourceServices":[ "bedrock.amazonaws.com" ], }, { "Description":"Sales access", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/finance
" ] } ], "AllowFromPublic":true } ]
此策略仅为以“finance”(财务)开头的集合提供针对 OpenSearch 控制面板的公共访问权限。任何直接访问 OpenSearch API 的尝试都将失败。
[ { "Description": "Dashboards access", "Rules": [ { "ResourceType": "dashboard", "Resource": [ "collection/
finance*
" ] } ], "AllowFromPublic": true } ]
网络策略可以应用于现有集合以及未来集合。例如,您可以创建一个集合,然后使用与集合名称相匹配的规则创建网络策略。在创建集合之前,无需创建网络策略。
注意事项
在为集合配置网络访问权限时,请考虑以下事项:
-
如果您计划为集合配置 VPC 端点访问权限,必须首先创建至少一个 OpenSearch 无服务器托管的 VPC 端点。
-
授予 AWS 服务的私有访问权限仅适用于集合的 OpenSearch 端点,不适用于 OpenSearch 控制面板端点。即使
ResourceType
为dashboard
,也无法向 AWS 服务 授予对 OpenSearch 控制面板的访问权限。 -
如果某个集合可以从公共网络访问,则也可以从所有 OpenSearch 无服务器托管的 VPC 端点和所有 AWS 服务访问。
-
多个网络策略可以应用于一个集合。有关更多信息,请参阅 策略优先顺序。
配置网络策略所需的权限
针对 OpenSearch 无服务器的网络访问使用以下(AWS Identity and Access ManagementIAM)权限。您可以指定 IAM 条件,以将用户限制到与特定集合相关的网络策略。
-
aoss:CreateSecurityPolicy
:创建网络访问策略。 -
aoss:ListSecurityPolicies
:列出当前账户中的所有网络策略。 -
aoss:GetSecurityPolicy
:查看网络访问策略规范。 -
aoss:UpdateSecurityPolicy
:修改给定的网络访问策略,并更改 VPC ID 或公共访问指定。 -
aoss:DeleteSecurityPolicy
:删除网络访问策略(将其与所有集合分离后)。
以下基于身份的访问策略允许用户查看所有网络策略,并使用资源模式 collection/application-logs
更新策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aoss:UpdateSecurityPolicy" ], "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": "
application-logs
" } } }, { "Effect": "Allow", "Action": [ "aoss:ListSecurityPolicies", "aoss:GetSecurityPolicy" ], "Resource": "*" } ] }
注意
此外,OpenSearch 无服务器需要集合资源的 aoss:APIAccessAll
和 aoss:DashboardsAccessAll
权限。有关更多信息,请参阅 使用 OpenSearch API 操作。
策略优先顺序
在某些情况下,网络策略规则可能会在策略内部或策略之间重叠。发生这种情况时,对于以下两条规则共用的任何集合,指定公有访问权限的规则将覆盖指定私有访问权限的规则。
例如,在以下策略中,两条规则都指定针对 finance
集合的网络访问权限,但一条规则指定 VPC 访问权限,而另一条规则指定公共访问权限。在这种情况下,公共访问权限仅会针对“finance”(财务)集合(因为该集合同时存在于两条规则中)覆盖 VPC 访问权限,因此可以从公共网络访问“finance”(财务)集合。“sales”(销售)集合将具有从指定端点进行 VPC 访问的权限。
[ { "Description":"Rule 1", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/
sales
", "collection/finance
" ] } ], "AllowFromPublic":false, "SourceVPCEs":[ "vpce-050f79086ee71ac05
" ] }, { "Description":"Rule 2", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/finance
" ] } ], "AllowFromPublic":true } ]
如果不同规则中的多个 VPC 端点适用于一个集合,则这些规则具有累加性,可以从所有指定端点访问该集合。如果您将 AllowFromPublic
设置为 true
,但又提供了一个或多个 SourceVPCEs
或 SourceServices
,则 OpenSearch 无服务器将忽略 VPC 端点,关联的集合将具有公有访问权限。
创建网络策略(控制台)
网络策略可以应用于现有策略以及未来策略。建议您在开始创建集合之前,先创建网络策略。
创建 OpenSearch 无服务器网络策略
-
在 https://console.aws.amazon.com/aos/home
打开 Amazon OpenSearch Service 控制台。 -
在左侧导航面板上,展开 Serverless(无服务器),然后选择 Network policies(网络策略)。
-
选择 Create network policy(创建网络策略)。
-
为策略提供名称和描述。
-
提供一条或多条规则。这些规则将定义针对您的 OpenSearch 无服务器集合及其 OpenSearch 控制面板端点的访问权限。
每个规则包含以下元素:
元素 描述 Rule name(规则名称) 描述规则内容的名称。例如,“VPC access for marketing team”(针对营销团队的 VPC 访问权限)。 Access type(访问类型) 选择公有或私有访问。选择选择以下一项或两项: -
用于访问的 VPC 端点 – 指定一个或多个 OpenSearch 无服务器托管的 VPC 端点。
-
AWS 服务私有访问 – 选择一个或多个支持的 AWS 服务。
资源类型 选择是提供针对 OpenSearch 端点的访问权限(允许调用 OpenSearch API)、针对 OpenSearch 控制面板的访问权限(允许访问 OpenSearch 插件的可视化效果和用户界面),还是针对两者的访问权限。 注意
AWS 服务私有访问仅适用于集合的 OpenSearch 端点,不适用于 OpenSearch 控制面板端点。即使您选择了 OpenSearch 控制面板,AWS 服务也只能获得端点访问权限。
对于您选择的每种资源类型,您可以选择现有集合以将策略设置应用于它,和/或创建一个或多个资源模式。资源模式由前缀和通配符 (*) 组成,用于定义策略设置将应用于哪些集合。
例如,如果您包括名为
Marketing*
的模式,则名称以“Marketing”(营销)开头的任何新建或现有集合都将自动应用此策略中的网络设置。一个通配符 (*
) 可将策略应用于所有当前和未来集合。此外,您还可以指定未来集合的名称,而不使用通配符,如
Finance
。OpenSearch 无服务器会将策略设置应用于任何具有该确切名称的新建集合。 -
-
当您对策略配置感到满意时,选择 Create(创建)。
创建网络策略(AWS CLI)
要使用 OpenSearch 无服务器 API 操作创建网络策略,请以 JSON 格式指定规则。CreateSecurityPolicy 请求即可接受内联策略,也可接受 .json 文件。所有集合和模式都必须采用 collection/<collection
name|pattern>
形式。
注意
资源类型 dashboards
仅允许针对 OpenSearch 控制面板的权限,但要使 OpenSearch 控制面板正常运行,您还必须允许从相同的源访问集合。有关示例,请参阅下面的第二个策略。
要指定私有访问,请包含以下一个或两个元素:
-
SourceVPCEs
– 指定一个或多个 OpenSearch 无服务器托管的 VPC 端点。 -
SourceServices
– 指定一个或多个支持的 AWS 服务的标识符。目前支持以下服务的标识符:-
bedrock.amazonaws.com
– Amazon Bedrock
-
以下示例网络策略向一个 VPC 端点和 Amazon Bedrock 授予了对集合端点的私有访问权限,但仅限以前缀 log*
开头的集合。经过身份验证的用户无法登录到 OpenSearch 控制面板;他们只能以编程方式访问集合端点。
[ { "Description":"Private access for log collections", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/
log*
" ] } ], "AllowFromPublic":false, "SourceVPCEs":[ "vpce-050f79086ee71ac05
" ], "SourceServices":[ "bedrock.amazonaws.com" ], } ]
以下策略为名为 finance
的单个集合提供针对 OpenSearch 端点和 OpenSearch 控制面板的公共访问权限。如果集合不存在,则网络设置将在创建该集合时应用于该集合。
[ { "Description":"Public access for finance collection", "Rules":[ { "ResourceType":"dashboard", "Resource":[ "collection/
finance
" ] }, { "ResourceType":"collection", "Resource":[ "collection/finance
" ] } ], "AllowFromPublic":true } ]
以下请求将创建上述网络策略:
aws opensearchserverless create-security-policy \ --name
sales-inventory
\ --type network \ --policy "[{\"Description\":\"Public access for finance collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/finance\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/finance\"]}],\"AllowFromPublic\":true}]"
要在 JSON 文件中提供策略,请使用 --policy
file://
格式my-policy
.json
查看网络策略
在创建集合之前,您可能想预览账户中的现有网络策略,以查看哪个网络策略的资源模式与您的集合名称相匹配。以下 ListSecurityPolicies 请求将列出您账户中的所有网络策略:
aws opensearchserverless list-security-policies --type network
该请求将返回有关所有已配置的网络策略的信息。要查看某一具体策略中定义的模式规则,请在响应的 securityPolicySummaries
元素内容中查找策略信息。请注意此策略的 name
和 type
,并在 GetSecurityPolicy 请求中使用这些属性来接收包含以下策略详细信息的响应:
{ "securityPolicyDetail": [ { "type": "network", "name": "my-policy", "policyVersion": "MTY2MzY5MTY1MDA3Ml8x", "policy": "[{\"Description\":\"My network policy rule\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection/*\"]}],\"AllowFromPublic\":true}]", "createdDate": 1663691650072, "lastModifiedDate": 1663691650072 } ] }
要查看有关某个具体策略的详细信息,请使用 GetSecurityPolicy 命令。
更新网络策略
当您修改针对网络的 VPC 端点或公共访问权限指定时,所有相关集合都会受到影响。要在 OpenSearch 无服务器控制台中更新网络策略,请展开 Network policies(网络策略),选择要修改的策略,然后选择 Edit(编辑)。进行更改,然后选择 Save(保存)。
要使用 OpenSearch 无服务器 API 更新网络策略,请使用 UpdateSecurityPolicy 命令。您必须在请求中包括策略版本。您可以使用 ListSecurityPolicies
或 GetSecurityPolicy
命令检索策略版本。包括最新策略版本可以确保您不会无意中覆盖其他人所做的更改。
以下请求将使用新策略 JSON 文档更新网络策略:
aws opensearchserverless update-security-policy \ --name sales-inventory \ --type network \ --policy-version
MTY2MzY5MTY1MDA3Ml8x
\ --policy file://my-new-policy.json
删除网络策略
必须先将网络策略与所有集合分离,然后才能删除网络策略。要在 OpenSearch 无服务器控制台中删除策略,请选择该策略,然后选择 Delete(删除)。
您也可以使用 DeleteSecurityPolicy 命令:
aws opensearchserverless delete-security-policy --name
my-policy
--type network