如何使用 IAM 角色跨 AWS 帳戶委派 Amazon OpenSearch Service 存取權?

上次更新日期:2022 年 4 月 20 日

我想與不同帳戶中的使用者共用我帳戶中的 Amazon OpenSearch 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"
        }]
}

在步驟 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 使用者。您也不需要從一個帳戶登出,然後登入另一個帳戶來存取資源。

Amazon OpenSearch Service 是 Amazon Elasticsearch Service 的後繼者。


此文章是否有幫助?


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