View a markdown version of this page

跨账户数据访问 OpenSearch 域名 - 亚马逊 OpenSearch 服务

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

跨账户数据访问 OpenSearch 域名

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

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

重要概念

源账户

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

目标账户

OpenSearch 域 AWS 账户 所在的位置。

跨账户角色

目标账户中的 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 启用了细粒度访问控制的域。没有精细访问控制的域不支持跨账户数据源关联。

  • 对于 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 用户或角色 ARNs。精细的访问控制为控制对索引和文档的访问提供了额外的授权层。

等待域名状态变为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::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id" } } } ] }
  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 用户或角色 ARNs。精细的访问控制为控制对索引和文档的访问提供了额外的授权层。

等待域名状态变为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::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id" } } } ] }
  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 访问策略 必需 必需
跨账户角色 跨账户为必填项 跨账户为必填项
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 及以上。

  • 跨账户数据源关联需要在目标域上启用精细的访问控制。

问题排查

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