如何使用 IAM 角色在 AWS 账户之间委派 OpenSearch Service 访问权限?

2 分钟阅读
0

我想要与其他账户的用户共享我的 AWS 账户中的 Amazon OpenSearch Service 资源。

简短描述

完成以下步骤,以允许用户使用 AWS Identity and Access Management(IAM)角色访问您的域资源:

  1. 在账户 A 中创建一个允许访问目标域的角色。
  2. 在账户 B 下创建一个允许在账户 A 中代入角色的用户。
  3. 向账户 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-IDUser 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>/*"
     }]
}

切换角色以测试访问权限

切换角色以测试访问权限:

  1. CrossAccount-test ARN 复制到剪贴板。
  2. 使用 AWS 管理控制台登录账户 B。
  3. 用户选项卡中,在下拉列表中选择切换角色
  4. 切换角色页面上,输入账户 A 的账户 ID 和角色名称。在此示例中,角色名称为 CrossAccount-test
  5. 选择切换角色

**注意:**如果账户 B 能在账户 A 环境的命令行中运行,则可以使用 AWS CLI 切换角色。有关详细信息,请参阅切换角色(AWS CLI)

相关信息

跨账户策略评估逻辑

Amazon OpenSearch Service 中的身份和访问管理

AWS 官方
AWS 官方已更新 1 年前