如何使用 IAM 角色委派跨 AWS 账户的 Amazon OpenSearch Service 访问权限?

上次更新日期:2021 年 8 月 5 日

我想与其他账户中的用户共享我账户中的 Amazon OpenSearch Service(Amazon Elasticsearch Service 的后继者)资源。我该如何操作?

简短描述

为 OpenSearch Service 域启用跨账户访问的最简单方法是,使用 AWS Identity and Access Management (IAM) 角色设置跨账户控制。通过在目标账户中添加 IAM 角色,您可以允许可信账户中的用户访问目标账户下的 OpenSearch Service 域。这样,组织中的不同用户可以通过在 AWS 控制台中切换 IAM 角色来访问和管理中央日志记录站。

为使用户可以使用 IAM 角色访问您的域资源,操作流程如下:

  1. 在账户 A 中创建一个获准访问目标域的角色。
  2. 在账户 B 下创建一个获准在账户 A 中担任角色的用户。
  3. 通过切换角色,向账户 B 中的用户授予使用角色访问目标域的访问权限。

注意:账户 A 是目标域所在的账户。账户 B 是用户从其中访问中央日志记录工作台的账户。

解决方法

注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI

创建角色并授予管理域的权限

在此示例中,我们创建了一个名为 CrossAccount-test 的角色,并授予管理域测试的完全权限。

{
    "Version": "2012-10-17",
    "Statement": [
       
        {
            "Effect": "Allow",
            "Action": [
               
        "es:*"
            ],
            "Resource": “arn:aws:es:<Region>:<Account A-ID>:domain/test/*"
       
        }
    ]
}

编辑角色的信任关系

接下来,编辑角色 CrossAccount-test 的信任关系。

注意:相应地更改账户和用户名。

{
 
        "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"
   
        }
  ]
{
 
        "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"
   
        }
  ]
}

在步骤 1 和 2 中,将账户 B 中的用户定义为可信实体,并授予允许受信任用户访问账户 A 中的域的完全权限。

向账户 B 中的用户授予访问权限

在账户 B 中,创建具有以下权限的用户或组:

{
    "Version": "2012-10-17",
    "Statement": {
       
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::<Account A-ID>:role/<CrossAccount-test>"
   
        }
}

添加此策略语句时,您允许对账户 A 中的 CrossAccount-test 角色执行 AssumeRole 操作。

注意:请确保将 Resource 元素中的 ACCOUNT A-ID 更改为账户 A 的 AWS 账户 ID。

编辑 OpenSearch Service 访问策略以允许角色访问域

此时,您已信任账户 B 在账户 A 中担任角色。接下来,允许此角色访问您的域。

编辑 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)

您的用户权限立即切换到您在账户 A 下创建的角色允许的权限。通过这种方式设置跨账户访问权限,您的用户无需在不同账户下分别创建 IAM 用户。您也不必为了访问资源而退出一个账户,然后再登录另一个账户。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?