如何使用 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 的角色,並授予管理網域 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 動作。

注意:確定您已將資源元素中的 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. User (使用者) 標籤中,從下拉式清單中選擇 Switch Role (切換角色)。
  4. Switch Role (切換角色) 頁面上,輸入帳戶 A 的帳戶 ID 和角色名稱。在此範例中,角色名稱為 CrossAccount-test
  5. 選擇 Switch Role (切換角色)。

注意:如果帳戶 B 需要在命令列的帳戶 A 環境中運作,您可以使用 AWS CLI 來切換角色。如需詳細資訊,請參閱切換角色 (AWS CLI)

您的使用者許可會立即切換至您在帳戶 A 下建立的角色所允許的許可,透過這種方式設定您的跨帳戶存取權限,您的使用者不需要在不同帳戶下建立個別 IAM 使用者。您也不需要從一個帳戶登出,然後登入另一個帳戶來存取資源。


此文章是否有幫助?


您是否需要帳單或技術支援?