我想要与其他账户的用户共享我的 AWS 账户中的 Amazon OpenSearch Service 资源。
简短描述
完成以下步骤,以允许用户使用 AWS Identity and Access Management(IAM)角色访问您的域资源:
- 在账户 A 中创建一个允许访问目标域的角色。
- 在账户 B 下创建一个允许在账户 A 中代入角色的用户。
- 向账户 B 中的用户授予访问权限,以便切换角色以访问目标域。
**注意:**账户 A 是目标域所在的账户。账户 B 是用户从中访问中央登录站的账户。
解决方法
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
创建角色并授予管理您的域的权限
创建 IAM 角色并授予权限以允许用户管理您的域。
在此示例中,创建了名为 CrossAccount-test 的角色,该角色授予管理域 test 的完全权限。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"es:*"
],
"Resource": "arn:aws:es:<Region>:<Account A-ID>:domain/test/*"
}]
}
编辑角色的信任关系
编辑角色的信任关系。在此示例中,它是 CrossAccount-test。
**注意:**请将 Account B-ID 和 User Name 替换为账户 B 的 ID 和您的用户名。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "es.amazonaws.com",
"AWS": ["arn:aws:iam::<Account B-ID>:root", "arn:aws:iam::<Account B-ID>:user/<User Name>"]
},
"Action": "sts:AssumeRole"
}]
}
向账户 B 中的用户授予访问权限
在账户 B 中,创建具有以下权限的用户或群组:
**注意:**请将 Account A-ID 替换为账户 A 的 ID。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::<Account A-ID>:role/<CrossAccount-test>"
}
}
添加此策略语句允许对账户 A 中的 CrossAccount-test 角色执行 AssumeRole API 操作。
编辑 OpenSearch Service 访问策略以允许角色访问域
允许此角色访问您的域。
编辑 OpenSearch Service 访问策略并输入以下信息:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<Account A-ID>:role/<CrossAccount-test>"
]
},
"Action": "es:*",
"Resource": "arn:aws:es:<region>:<Account A-ID>:domain/<Domain Name>/*"
}]
}
切换角色以测试访问权限
切换角色以测试访问权限:
- 将 CrossAccount-test ARN 复制到剪贴板。
- 使用 AWS 管理控制台登录账户 B。
- 从用户选项卡中,在下拉列表中选择切换角色。
- 在切换角色页面上,输入账户 A 的账户 ID 和角色名称。在此示例中,角色名称为 CrossAccount-test。
- 选择切换角色。
**注意:**如果账户 B 能在账户 A 环境的命令行中运行,则可以使用 AWS CLI 切换角色。有关详细信息,请参阅切换角色(AWS CLI)。
相关信息
跨账户策略评估逻辑
Amazon OpenSearch Service 中的身份和访问管理