View a markdown version of this page

Cross-account OpenSearch 域名数据访问权限 - 亚马逊 OpenSearch 服务

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

Cross-account OpenSearch 域名数据访问权限

您可以在一个账户中配置 OpenSearch 用户界面应用程序,以访问不同账户中的 OpenSearch 域名。当您使用跨账户数据源创建 OpenSearch UI 应用程序时,您需要提供iamRoleForDataSourceArn指向目标账户中的 IAM 角色的。 OpenSearch 用户界面通过担任此角色并调用验证域可访问性es:DescribeDomain来验证请求。跨账户角色仅在数据源关联期间使用。数据平面访问由目标域的访问策略单独控制。

Cross-account 数据源支持需要在目标域上启用精细的访问控制。 Fine-grained 访问控制提供了域访问策略之外的额外授权层,允许您控制对单个索引、文档和字段的访问。

重要概念

源账户

托管您的 OpenSearch UI 应用程序的。 AWS 账户

目标账户

OpenSearch 域 AWS 账户 所在的位置。

Cross-account 角色

目标账户中的 IAM 角色,仅在数据源关联期间使用。 OpenSearch UI 扮演这个角色来调用es:DescribeDomain,它会检索域端点并验证是否启用了精细的访问控制。这是发现和验证步骤,而不是安全边界。跨账户角色永远不会用于数据平面访问。关联后,所有数据平面请求均由域的访问策略和后端角色映射进行授权,与跨账户角色无关。

IAM 身份中心应用程序角色

源账户中的一个 IAM 角色,用于访问 IAM Identity Center 用户数据平面。

跨账户角色假设的工作原理

当您使用跨账户数据源创建或更新 OpenSearch 用户界面应用程序时, OpenSearch UI 会使用转发访问会话 (F AS) 在目标账户中扮演跨账户角色。FAS 会将主叫方自己的 IAM 身份传播给呼叫。sts:AssumeRole这意味着:

  • 目标账户的信任策略控制哪些来源账户委托人可以担任跨账户角色。

  • 代入的角色会话带有发起CreateApplicationUpdateApplication请求的调用者的身份。

  • 只有在关联调用es:DescribeDomain期间才会扮演跨账户角色。它不用于任何后续的数据平面操作。

对于数据平面访问:

  • IAM 用户使用自己的 IAM 证书签署请求。目标域的访问策略直接授权这些请求。

  • IAM Identity Center 用户使用源账户中的 IAM 身份中心应用程序角色 (iamRoleForIdentityCenterApplicationArn) 签署请求。目标域的访问策略和后端角色映射对这些请求进行授权。

先决条件

在设置跨账户数据访问权限之前,请确保您具备以下条件:

  • AWS CLI 已安装并配置

  • 同时访问源和目标 AWS 账户

  • OpenSearch 启用了细粒度访问控制的域。 Cross-account 没有精细访问控制的域不支持数据源关联。

  • 对于 IAM 身份中心流程: AWS IAM Identity Center 组织实例

场景

选择与您的身份验证方法和域配置相匹配的方案:

场景 1:IAM 用户访问公共域

步骤 1:创建跨账户 IAM 角色(目标账户)

在目标账户中创建 IAM 角色,允许源账户代入该角色进行域验证。

创建跨账户角色
  1. 创建允许源账户担任该角色的信任策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:root" }, "Action": "sts:AssumeRole" }] }
  2. 创建该角色:

    aws iam create-role \ --role-name OpenSearchUIAccessRole \ --assume-role-policy-document file://trust-policy.json
  3. 创建仅包含以下es:DescribeDomain操作的权限策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:region:target-account-id:domain/*" }] }
  4. 将权限策略附加到角色:

    aws iam put-role-policy \ --role-name OpenSearchUIAccessRole \ --policy-name ValidationOnly \ --policy-document file://permissions-policy.json

步骤 2:创建 OpenSearch 域名(目标账户)

在目标账户中创建一个启用精细访问控制和加密的 OpenSearch 域:

aws opensearch create-domain \ --domain-name domain-name \ --engine-version OpenSearch_2.19 \ --cluster-config InstanceType=m5.large.search,InstanceCount=1 \ --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \ --node-to-node-encryption-options '{"Enabled":true}' \ --encryption-at-rest-options '{"Enabled":true}' \ --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::source-account-id:root"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/domain-name/*"}]}' \ --region region
注意

此访问策略的范围是源账户对 IAM 委托人的数据平面访问权限。要获得更严格的访问权限,请将账户根委托人替换为特定的 IAM 用户或角色 ARN。 Fine-grained 访问控制为控制对索引和文档的访问提供了额外的授权层。

等待域名状态变为Active后再继续。

步骤 3:创建 OpenSearch UI 应用程序(源账户)

使用跨账户数据源在源账户中创建应用程序:

aws opensearch create-application \ --region region \ --name "cross-account-iam-app" \ --data-sources '[{ "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name", "dataSourceDescription":"Cross-account domain", "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole" }]' \ --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'

步骤 4:验证和访问

检索应用程序详细信息以获取端点 URL:

aws opensearch get-application \ --region region \ --id application-id
  • 从响应中导航到应用程序终端节点 URL。

  • 使用 IAM 证书登录。

  • IAM 用户使用自己的证书签署数据平面请求。

  • 目标域访问策略控制用户可以访问哪些数据。

场景 2:IAM 身份中心用户访问公共域

步骤 1:创建跨账户 IAM 角色(目标账户)

在目标账户中创建 IAM 角色,允许源账户代入该角色进行域验证。

创建跨账户角色
  1. 创建允许源账户担任该角色的信任策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:root" }, "Action": "sts:AssumeRole" }] }
  2. 创建该角色:

    aws iam create-role \ --role-name OpenSearchUIAccessRole \ --assume-role-policy-document file://trust-policy.json
  3. 创建仅包含以下es:DescribeDomain操作的权限策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:region:target-account-id:domain/*" }] }
  4. 将权限策略附加到角色:

    aws iam put-role-policy \ --role-name OpenSearchUIAccessRole \ --policy-name ValidationOnly \ --policy-document file://permissions-policy.json

步骤 2:创建 OpenSearch 域名(目标账户)

在目标账户中创建 OpenSearch 域名。使用与相同的命令步骤 2:创建 OpenSearch 域名(目标账户),但要更新访问策略以允许来自源账户的 IAM Identity Center 应用程序角色:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:region:target-account-id:domain/domain-name/*" }] }

等待域名状态变为Active后再继续。

步骤 3:为 IAM 身份中心应用程序(源账户)创建 IAM 角色

在源账户中创建 IAM 角色,用户 OpenSearch 界面使用该角色访问 IAM Identity Center 用户数据平面。

创建 IAM 身份中心应用程序角色
  1. 创建信任策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "application.opensearchservice.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "application.opensearchservice.amazonaws.com" }, "Action": "sts:SetContext", "Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": "arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }
  2. 创建权限策略:

    { "Version": "2012-10-17", "Statement": [{ "Sid": "OpenSearchDomain", "Effect": "Allow", "Action": ["es:ESHttp*"], "Resource": "*" }] }
  3. 创建角色并附加策略:

    aws iam create-role \ --role-name NeoIdCAppRole \ --assume-role-policy-document file://neoidc-trust-policy.json aws iam put-role-policy \ --role-name NeoIdCAppRole \ --policy-name NeoIdCAppPermissions \ --policy-document file://neoidc-permissions-policy.json

步骤 4:使用 IAM 身份中心(源账户)创建 OpenSearch UI 应用程序

aws opensearch create-application \ --region region \ --name "cross-account-idc-app" \ --iam-identity-center-options '{ "enabled":true, "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id", "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole" }' \ --data-sources '[{ "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name", "dataSourceDescription":"Cross-account domain", "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole" }]' \ --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'

步骤 5:创建和分配 IAM 身份中心用户和群组

创建 IAM 身份中心用户

运行如下命令。将 placeholder values 替换为您自己的信息。

aws identitystore create-user \ --identity-store-id d-directory-id \ --user-name user-email \ --display-name "display-name" \ --name Formatted=string,FamilyName=last-name,GivenName=first-name \ --emails Value=user-email,Type=work,Primary=true
创建 IAM 身份中心群组并添加用户

运行以下 命令:

aws identitystore create-group \ --identity-store-id d-directory-id \ --display-name "OpenSearchUsers" \ --description "Users with OpenSearch access" aws identitystore create-group-membership \ --identity-store-id d-directory-id \ --group-id group-id \ --member-id UserId=user-id
将用户或组分配给应用程序

运行以下命令:

aws sso-admin create-application-assignment \ --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \ --principal-id user-id-or-group-id \ --principal-type USER
在目标域上配置后端角色映射

将 IAM 身份中心组映射到目标域上的 OpenSearch 安全角色:

curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \ -u admin:master-password \ -H 'Content-Type: application/json' \ -d '{ "backend_roles": ["group-id"], "hosts": [], "users": [] }'

步骤 6:验证和访问

aws opensearch get-application \ --region region \ --id application-id
  • 导航到应用程序终端节点 URL。

  • 使用 IAM 身份中心用户证书登录。

  • IAM Identity Center 用户的数据请求是使用 IAM Identity Center 应用程序角色而不是跨账户角色签署的。

  • 域上的后端角色映射控制数据访问权限。

场景 3:IAM 用户访问 VPC 域

步骤 1:创建跨账户 IAM 角色(目标账户)

在目标账户中创建 IAM 角色,允许源账户代入该角色进行域验证。

创建跨账户角色
  1. 创建允许源账户担任该角色的信任策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:root" }, "Action": "sts:AssumeRole" }] }
  2. 创建该角色:

    aws iam create-role \ --role-name OpenSearchUIAccessRole \ --assume-role-policy-document file://trust-policy.json
  3. 创建仅包含以下es:DescribeDomain操作的权限策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:region:target-account-id:domain/*" }] }
  4. 将权限策略附加到角色:

    aws iam put-role-policy \ --role-name OpenSearchUIAccessRole \ --policy-name ValidationOnly \ --policy-document file://permissions-policy.json

步骤 2:设置 VPC(目标账户)

如果目标账户中已存在 VPC,请跳过此步骤。

# Create VPC aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --region region # Create subnet aws ec2 create-subnet \ --vpc-id vpc-id \ --cidr-block 10.0.1.0/24 \ --availability-zone regiona \ --region region # Create security group aws ec2 create-security-group \ --group-name opensearch-vpc-sg \ --description "Security group for OpenSearch VPC domain" \ --vpc-id vpc-id \ --region region # Allow inbound HTTPS aws ec2 authorize-security-group-ingress \ --group-id security-group-id \ --protocol tcp \ --port 443 \ --cidr 10.0.0.0/16 \ --region region

了解有关创建 VPC 域的更多信息。

步骤 3:创建 VPC 域(目标账户)

aws opensearch create-domain \ --domain-name vpc-domain-name \ --engine-version OpenSearch_2.19 \ --cluster-config InstanceType=m5.large.search,InstanceCount=1 \ --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \ --vpc-options "SubnetIds=subnet-id,SecurityGroupIds=security-group-id" \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \ --node-to-node-encryption-options '{"Enabled":true}' \ --encryption-at-rest-options '{"Enabled":true}' \ --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::source-account-id:root"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"}]}' \ --region region
注意

此访问策略的范围是源账户对 IAM 委托人的数据平面访问权限。要获得更严格的访问权限,请将账户根委托人替换为特定的 IAM 用户或角色 ARN。 Fine-grained 访问控制为控制对索引和文档的访问提供了额外的授权层。

等待域名状态变为Active后再继续。

步骤 4:为 OpenSearch UI 服务委托人(目标账户)授权 VPC 终端节点

重要

这是 VPC 域所独有的关键步骤。必须明确授权 OpenSearch 用户界面服务才能访问 VPC 终端节点。

# Authorize the service principal aws opensearch authorize-vpc-endpoint-access \ --domain-name vpc-domain-name \ --service "application.opensearchservice.amazonaws.com" \ --region region # Verify authorization aws opensearch list-vpc-endpoint-access \ --domain-name vpc-domain-name \ --region region

预期的回应:

{ "AuthorizedPrincipalList": [ { "PrincipalType": "AWS_SERVICE", "Principal": "application.opensearchservice.amazonaws.com" } ] }

步骤 5:创建 OpenSearch UI 应用程序(源账户)

aws opensearch create-application \ --region region \ --name "cross-account-vpc-iam-app" \ --data-sources '[{ "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name", "dataSourceDescription":"Cross-account VPC domain", "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole" }]' \ --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'

步骤 6:验证和访问

检索应用程序详细信息以获取端点 URL:

aws opensearch get-application \ --region region \ --id application-id
  • 从响应中导航到应用程序终端节点 URL。

  • 使用 IAM 证书登录。

  • IAM 用户使用自己的证书签署数据平面请求。

  • 目标域访问策略控制用户可以访问哪些数据。

场景 4:IAM 身份中心用户访问 VPC 域

步骤 1:创建跨账户 IAM 角色(目标账户)

在目标账户中创建 IAM 角色,允许源账户代入该角色进行域验证。

创建跨账户角色
  1. 创建允许源账户担任该角色的信任策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:root" }, "Action": "sts:AssumeRole" }] }
  2. 创建该角色:

    aws iam create-role \ --role-name OpenSearchUIAccessRole \ --assume-role-policy-document file://trust-policy.json
  3. 创建仅包含以下es:DescribeDomain操作的权限策略:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:region:target-account-id:domain/*" }] }
  4. 将权限策略附加到角色:

    aws iam put-role-policy \ --role-name OpenSearchUIAccessRole \ --policy-name ValidationOnly \ --policy-document file://permissions-policy.json

步骤 2:设置 VPC(目标账户)

如果目标账户中已存在 VPC,请跳过此步骤。

# Create VPC aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --region region # Create subnet aws ec2 create-subnet \ --vpc-id vpc-id \ --cidr-block 10.0.1.0/24 \ --availability-zone regiona \ --region region # Create security group aws ec2 create-security-group \ --group-name opensearch-vpc-sg \ --description "Security group for OpenSearch VPC domain" \ --vpc-id vpc-id \ --region region # Allow inbound HTTPS aws ec2 authorize-security-group-ingress \ --group-id security-group-id \ --protocol tcp \ --port 443 \ --cidr 10.0.0.0/16 \ --region region

了解有关创建 VPC 域的更多信息。

步骤 3:创建 VPC 域(目标账户)

使用与相同的命令步骤 3:创建 VPC 域(目标账户),但要更新访问策略以允许来自源账户的 IAM Identity Center 应用程序角色:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:region:target-account-id:domain/vpc-domain-name/*" }] }

等待域名状态变为Active后再继续。

步骤 4:为 OpenSearch UI 服务委托人(目标账户)授权 VPC 终端节点

重要

这是 VPC 域所独有的关键步骤。必须明确授权 OpenSearch 用户界面服务才能访问 VPC 终端节点。

# Authorize the service principal aws opensearch authorize-vpc-endpoint-access \ --domain-name vpc-domain-name \ --service "application.opensearchservice.amazonaws.com" \ --region region # Verify authorization aws opensearch list-vpc-endpoint-access \ --domain-name vpc-domain-name \ --region region

预期的回应:

{ "AuthorizedPrincipalList": [ { "PrincipalType": "AWS_SERVICE", "Principal": "application.opensearchservice.amazonaws.com" } ] }

步骤 5:为 IAM 身份中心应用程序(源账户)创建 IAM 角色

在源账户中创建 IAM 角色,用户 OpenSearch 界面使用该角色访问 IAM Identity Center 用户数据平面。

创建 IAM 身份中心应用程序角色
  1. 创建信任策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "application.opensearchservice.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "application.opensearchservice.amazonaws.com" }, "Action": "sts:SetContext", "Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": "arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }
  2. 创建权限策略:

    { "Version": "2012-10-17", "Statement": [{ "Sid": "OpenSearchDomain", "Effect": "Allow", "Action": ["es:ESHttp*"], "Resource": "*" }] }
  3. 创建角色并附加策略:

    aws iam create-role \ --role-name NeoIdCAppRole \ --assume-role-policy-document file://neoidc-trust-policy.json aws iam put-role-policy \ --role-name NeoIdCAppRole \ --policy-name NeoIdCAppPermissions \ --policy-document file://neoidc-permissions-policy.json

步骤 6:使用 IAM 身份中心(源账户)创建 OpenSearch UI 应用程序

aws opensearch create-application \ --region region \ --name "cross-account-vpc-idc-app" \ --iam-identity-center-options '{ "enabled":true, "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id", "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole" }' \ --data-sources '[{ "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name", "dataSourceDescription":"Cross-account VPC domain", "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole" }]' \ --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'

步骤 7:创建和分配 IAM 身份中心用户和群组

创建 IAM 身份中心用户

运行如下命令。将 placeholder values 替换为您自己的信息。

aws identitystore create-user \ --identity-store-id d-directory-id \ --user-name user-email \ --display-name "display-name" \ --name Formatted=string,FamilyName=last-name,GivenName=first-name \ --emails Value=user-email,Type=work,Primary=true
创建 IAM 身份中心群组并添加用户

运行以下 命令:

aws identitystore create-group \ --identity-store-id d-directory-id \ --display-name "OpenSearchUsers" \ --description "Users with OpenSearch access" aws identitystore create-group-membership \ --identity-store-id d-directory-id \ --group-id group-id \ --member-id UserId=user-id
将用户或组分配给应用程序

运行以下命令:

aws sso-admin create-application-assignment \ --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \ --principal-id user-id-or-group-id \ --principal-type USER
在目标域上配置后端角色映射

将 IAM 身份中心组映射到目标域上的 OpenSearch 安全角色:

curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \ -u admin:master-password \ -H 'Content-Type: application/json' \ -d '{ "backend_roles": ["group-id"], "hosts": [], "users": [] }'

第 8 步:验证和访问

aws opensearch get-application \ --region region \ --id application-id
  • 导航到应用程序终端节点 URL。

  • 使用 IAM 身份中心用户证书登录。

  • IAM Identity Center 用户的数据请求是使用 IAM Identity Center 应用程序角色而不是跨账户角色签署的。

  • 域上的后端角色映射控制数据访问权限。

管理 应用程序

使用跨账户数据源更新应用程序

运行如下命令。将 placeholder values 替换为您自己的信息。

aws opensearch update-application \ --region region \ --id application-id \ --data-sources '[{ "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-1", "dataSourceDescription":"First cross-account domain", "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole" },{ "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-2", "dataSourceDescription":"Second cross-account domain", "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole" }]'
重要

更新操作将替换整个数据源数组。包括您要保留的所有数据源。

列出应用程序

运行以下命令:

aws opensearch list-applications \ --region region
删除应用程序

运行以下命令:

aws opensearch delete-application \ --region region \ --id application-id
撤销 VPC 终端节点访问权限

运行以下命令:

aws opensearch revoke-vpc-endpoint-access \ --domain-name vpc-domain-name \ --service "application.opensearchservice.amazonaws.com" \ --region region

快速参考

下表总结了域类型和身份验证方法之间的主要区别。

公共域与 VPC 域的比较
方面 公共领域 VPC 域
VPC 终端节点授权 非必需 必填项-必须授权 application.opensearchservice.amazonaws.com
网络设置 VPC、子网、入站 HTTPS (443) 的安全组
IAM 访问策略 必填 必填
Cross-account 角色 跨账户为必填项 跨账户为必填项
IAM 用户与 IAM 身份中心用户的比较
方面 IAM 用户 IAM Identity Center 用户
数据平面凭证 用户自己的 IAM 证书 IAM 身份中心应用程序角色
访问控制 域访问策略 域访问策略和后端角色映射
其他设置 IAM Identity Center 应用程序角色、 user/group 创建、应用程序分配、后端角色映射
OpenSearch UI 应用程序配置 没有 IAM 身份中心选项 --iam-identity-center-options 必需

重要提示

  • iamRoleForDataSourceArn必须与在同一个账户中dataSourceArn

  • iamRoleForDataSourceArn只有跨账户数据源才需要。对于同账户数据源,请将其省略。

  • 跨账户角色只需要es:DescribeDomain权限。它从来没有用于数据平面访问。

  • 对于 VPC 域,必须同时配置 IAM 策略和 VPC 终端节点授权。

  • 支持的引擎版本: OpenSearch 1.3 及以上。

  • Cross-account 数据源关联需要在目标域上启用精细的访问控制。

问题排查

问题 解决方案
应用程序创建失败并显示 “无法访问域” 验证跨账户角色是否具有es:DescribeDomain权限,以及信任策略是否允许源账户。
VPC 域关联失败 确保 VPC 终端节点已获得授权application.opensearchservice.amazonaws.com
IAM 用户数据平面访问被拒绝 检查目标域访问策略是否允许 IAM 用户或角色委托人。
IAM 身份中心用户数据平面访问被拒绝 确认后端角色映射包含 IAM 身份中心组 ID,以及域策略是否允许 IAM Identity Center 应用程序角色。
账户不匹配错误 请确保iamRoleForDataSourceArn该账户与中的域名位于同一个账户中dataSourceArn