本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
针对 Amazon OpenSearch 无服务器的网络访问权限
Amazon OpenSearch Serverless 集合的网络设置决定了是否可以通过互联网从公共网络访问该集合,还是必须以私有方式访问该集合。
私有访问适用于以下一种或两种情形:
-
OpenSearch 无服务器托管的 VPC 端点
-
支持 Amazon Web Services 服务 (例如 Amazon Bedrock)
您可以分别为集合的OpenSearch端点及其对应的OpenSearch 仪表板端点配置网络访问权限。
网络访问权限是允许从不同源网络进行访问的隔离机制。例如,如果集合的 OpenSearch Dashboards 端点可以公开访问,但 OpenSearch API 端点不可公开访问,则在从公共网络连接时,用户只能通过 Dashboards 访问集合数据。如果他们试图从公共网络 OpenSearch APIs直接拨打,则会被阻止。网络设置可以用于源类型到资源类型的此类排列。Amazon OpenSearch Serverless 同时支持 IPv4 和 IPv6连接。
网络策略
网络策略使您能够通过为符合策略中定义的规则的集合自动分配网络访问权限设置,从而大规模管理许多集合。
在网络策略中,您可以指定一系列规则。这些规则定义针对集合端点和 OpenSearch 控制面板端点的访问权限。每条规则都由访问权限类型(公有或私有)和资源类型(集合和/或 Dashboard OpenSearch s 端点)组成。对于每种资源类型(collection
和 dashboard
),您可以指定一系列规则,用于定义策略将适用于哪些集合。
在此示例策略中,第一条规则针对以 marketing*
一词开头的所有集合,指定了对集合端点和控制面板端点的 VPC 端点访问权限。此外还指定了 Amazon Bedrock 访问权限。
注意
授予 Amazon Bedrock Amazon Web Services 服务 等的私有访问权限仅适用于集合的 OpenSearch 端点,不适用于 Dashboards OpenSearch 端点。即使ResourceType
是dashboard
,也 Amazon Web Services 服务 无法授予对 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 Serverless 托管的 VPC 端点。
-
授予的私有访问权限 Amazon Web Services 服务 仅适用于集合的 OpenSearch端点,不适用于 Dashboard OpenSearch s 端点。即使
ResourceType
是dashboard
,也 Amazon Web Services 服务 无法授予对 OpenSearch 仪表板的访问权限。 -
如果某个集合可以从公共网络访问,则也可以从所有 OpenSearch Serverless 托管的 VPC 端点和所有访问。 Amazon Web Services 服务
-
多个网络策略可以应用于一个集合。有关更多信息,请参阅 策略优先顺序。
配置网络策略所需的权限
OpenSearch 无服务器的网络访问使用以下 Amazon Identity and Access Management (IAM)权限。您可以指定 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 Serverless 需要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 Serverless 会忽略 VPC 终端节点和服务标识符,关联的集合将具有公开访问权限。
创建网络策略(控制台)
网络策略可以应用于现有策略以及未来策略。建议您在开始创建集合之前,先创建网络策略。
创建 OpenSearch 无服务器网络策略
-
在https://console.aws.amazon.com/aos/家
中打开亚马逊 OpenSearch 服务控制台。 -
在左侧导航面板上,展开 Serverless(无服务器),然后选择 Network policies(网络策略)。
-
选择 Create network policy(创建网络策略)。
-
为策略提供名称和描述。
-
提供一条或多条规则。这些规则将定义针对 OpenSearch 无服务器集合及其 OpenSearch 控制面板端点的访问权限。
每个规则包含以下元素:
元素 描述 Rule name(规则名称) 描述规则内容的名称。例如,“VPC access for marketing team”(针对营销团队的 VPC 访问权限)。 Access type(访问类型) 选择公有或私有访问。选择选择以下一项或两项: -
用于访问的 VPC 端点 — 指定一个或多个OpenSearch 无服务器托管的 VPC 端点。
-
Amazon Web Services 服务 私有访问 — 选择一个或多个支持 Amazon Web Services 服务的。
资源类型 选择是提供 OpenSearch 端点访问权限(允许调用 OpenSearch API)、针对 Dashboards(允许访问 OpenSearch 插件的可视化效果和用户界面),还是针对两者的访问权限。 OpenSearch 注意
Amazon Web Services 服务 私有访问仅适用于集合的 OpenSearch 端点,不适用于 Dashboard OpenSearch s 端点。即使您选择了 Dash OpenSearch b oard Amazon Web Services 服务 s,也只能获得端点访问权限。
对于您选择的每种资源类型,您可以选择现有集合以将策略设置应用于它,和/或创建一个或多个资源模式。资源模式由前缀和通配符 (*) 组成,用于定义策略设置将应用于哪些集合。
例如,如果您包括名为
Marketing*
的模式,则名称以“Marketing”(营销)开头的任何新建或现有集合都将自动应用此策略中的网络设置。一个通配符 (*
) 可将策略应用于所有当前和未来集合。此外,您还可以指定 f ut ure 集合的名称,而不使用通配符,如
Finance
。 OpenSearch 无服务器会将策略设置应用于任何具有该确切名称的新建集合。 -
-
当您对策略配置感到满意时,选择 Create(创建)。
创建网络策略(Amazon CLI)
要使用 OpenSearch 无服务器 API 操作创建网络策略,请以 JSON 格式指定规则。该CreateSecurityPolicy请求同时接受内联策略和 .json 文件。所有集合和模式都必须采用 collection/<collection
name|pattern>
形式。
注意
资源类型dashboards
仅允许访问 OpenSearch 控制面板的权限,但要使 Dash OpenSearch boards 正常运行,您还必须允许从相同的源访问集合。有关示例,请参阅下面的第二个策略。
要指定私有访问,请包含以下一个或两个元素:
-
SourceVPCEs
— 指定一个或多个 OpenSearch 无服务器托管的 VPC 端点。 -
SourceServices
— 指定一个或多个支持的标识符 Amazon Web Services 服务。目前支持以下服务的标识符:-
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" ], } ]
以下策略为名为的单个集合提供针对 OpenSearch 端点和 OpenSearch 控制面板的公共访问权限finance
。如果集合不存在,则网络设置将在创建该集合时应用于该集合。
[ { "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
元素内容中查找策略信息。请注意本政策type
的name
和,并在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 Serverless 控制台中更新网络策略,请展开 Network policies(网络策略),选择要修改的策略,然后选择 Edit(编辑)。进行更改,然后选择保存。
要使用 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 Serverless 控制台中删除策略,请选择该策略,然后选择 Delete(删除)。
你也可以使用以下DeleteSecurityPolicy命令:
aws opensearchserverless delete-security-policy --name
my-policy
--type network