檢視次數:

如何在無法使用堆疊範本的情況下將您的 AWS 帳戶連接到雲端帳戶。

有些 AWS 帳戶不允許使用堆疊範本在雲端環境中部署資源。這通常是由於安全政策阻止自動建立堆疊範本中部署程式檔所需的 IAM 政策和角色。
要手動連接 AWS 帳戶,請利用 自動化中心 上的 API 資源。
重要
重要
  • 使用 Trend Vision One API 的使用者角色必須具有新增、刪除和編輯雲端帳戶的全部權限。關於使用者角色的詳細資訊,請參閱 使用者角色(Foundation Services 版本)
  • 使用此方法部署僅支援核心功能。您無法啟用其他雲端安全功能。
  • 截至二〇二四年二月,這些步驟適用於 AWS 控制台。

步驟

  1. 從雲端帳戶生成並下載堆疊範本,可以通過Trend Vision One控制台或調用API來完成。
    • 訪問Trend Vision One控制台並創建模板。
      1. Trend Vision One 主控台中,依次選擇 Service ManagementCloud AccountsAWS
      2. 點選Add Account
      3. Deployment Type畫面上,選擇CloudFormationSingle AWS Account
      4. 點選下一步
      5. 指定Account nameDescription,並選擇要部署的 AWS 區域。
      6. 如果您有多個 Server & Workload Protection Manager 實例,請選擇要與連接的帳戶關聯的實例,然後點選下一步
      7. 點選下一步,無需配置Features and Permissions畫面。
      8. 點選Download and Review Template
      注意
      注意
      Account NameDescription 欄位不會匯出到審查範本。您可以在調用連接帳戶 API 時提供這些參數。
    • 調用 API 以檢索模板。
      1. 在自動化中心找到Get AWS CloudFormation template API。
      2. 定位 query_params 字串。
      3. 對於 awsRegion,請提供您想要部署堆疊模板和核心功能的 AWS 區域。預設區域基於您的 Trend Vision One 區域。
      4. 對於 featuresfeatureAwsREgions,請將參數留空。
      5. 保存您的變更並呼叫 API。
        此 API 會返回下列內容:
        • templateUrl:下載範本的 URL。
        • visionOneOidcProviderUrl:部署模板所需的參數。
        • createStackUrl:指向Trend Vision One的 AWS CloudFormation 模板的 AWS CloudFormation 控制台 URL。
      6. 下載範本。
  2. 訪問 AWS 控制台。
  3. Trend Vision One 新增為身份提供者。
    1. 在 AWS 控制台中,打開Identity and Access Management (IAM)服務。
    2. 前往Access managementIdentity providers
    3. 點選Add provider
      Add an Identity provider screen 開啟。
    4. Configure provider部分,選擇OpenID Connect
    5. 對於提供者 URL,請輸入或貼上Provider URL
      • 如果您使用 API 調用範本,請複製並貼上 API 返回的 visionOneOidcProviderUrl 參數。
      • 如果您下載了範本,請輸入 cloudaccounts-{region}.xdr.trendmicro.com,其中 {region} 是您所在的 Trend Vision One 區域(us, eu, au, sg, in,jp
        例如,如果您的 Trend Vision One 區域是美國,您的 visionOneOidcProviderUrlcloudaccounts-us.xdr.trendmicro.com
    6. 對於Audience輸入arn:aws:iam::${AWSAccountId}:root
      ${AWSAccountId} 替換為您的 AWS 帳號 ID。
      CAM-AWSManual_Provider=GUID-06b9b214-6b7f-44b0-be1f-886d95805770.png
    7. 點選Get thumbprint
    8. 點選Add provider
      提供者已新增至Identity providers清單。
    9. 點選您建立的提供者名稱。
      提供者詳細資料畫面開啟。
    10. 複製提供者 ARN 以便在後續步驟中建立角色時使用。
    11. 找到Thumbprints部分並點選Manage
    12. 刪除建立提供者時生成的指紋,並貼上以下指紋。
      點選Add thumbprint以新增每一行。
      • 9e99a48a9960b14926bb7f3b02e22da2b0ab7280
      • 9565AD13689C2C4B4F018BE31767084D197F2692
      • 8CF427FD790C3AD166068DE81E57EFBB932272D4
      • F21C12F46CDB6B2E16F09F9419CDFF328437B2D7
      CAM-AWSManual_Thumbprint=GUID-f74acdc4-fa0c-4439-aadd-267a117fbb20.png
    13. 點選Save changes
  4. 新增Trend Vision One政策。
    1. Identity and Access Management服務中,前往Access managementPolicies
    2. 點選Create policy
    3. 對於Policy editor,選擇JSON
    4. 使用您下載的範本檔案中來自 VisionOnePolicyPart1 的相同參數複製並替換 Statement 參數。
      您也可以點選此連結以直接查看和複製 JSON 代碼。
      重要
      重要
      請確保保留程式碼的第二行 "Version": "2012-10-17"。刪除此行可能會導致政策無法正常運作。
    5. 點選下一步
    6. 對於Policy name,輸入VisionOnePolicyPart1
    7. 點選Create policy
      政策已建立,Policies畫面顯示。
    8. 在建立政策後,從Policies畫面點選Create policy
    9. 對於Policy editor,選擇JSON
    10. 使用您下載的範本檔案中來自VisionOnePolicyPart2的相同參數複製並替換Statement參數。
      您也可以點選此連結直接查看並複製 JSON 代碼。
      重要
      重要
      請確保保留程式碼的第二行 "Version": "2012-10-17"。刪除此行可能會導致政策無法正常運作。
    11. 點選下一步
    12. 對於Policy name,輸入VisionOnePolicyPart2
    13. 點選Create policy
      政策已建立,Policies畫面顯示。
  5. 新增Trend Vision One角色。
    1. Identity and Access Management服務中,前往Access managementRoles
    2. 點選Create role
    3. 對於Trusted entity type,選擇Custom trust policy
      Custom trust policy JSON 編輯器顯示。
    4. 將佔位符代碼替換為以下 JSON 代碼:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Federated": "${visionOneOIDCProvider}"
            },
            "Action": [
              "sts:AssumeRoleWithWebIdentity",
              "sts:SetSourceIdentity"
            ],
            "Condition": {
              "StringEquals": {
                "${visionOneOIDCProviderURL}:aud": "arn:aws:iam::${AWSAccountId}:root",
                "${visionOneOIDCProviderURL}:sub": [
                  "urn:visionone:identity:${visionOneRegion}:${visionOneAccountID}:account/${visionOneAccountID}"
                ]
              }
            }
          }
        ]
      }
    5. 替換以下參數的字串:
      參數
      說明
      範例
      "聯邦"
      "${visionOneOIDCProvider}" 替換為您創建的 提供者 ARN
      例如,如果您的 Trend Vision One 區域是美國,ARN 的格式如下 "arn:aws:iam::1xxxxxxxxxx1:oidc-provider/cloudaccounts-us.xdr.trendmicro.com"
      "StringEquals"
      將兩個 "${visionOneOIDCProviderURL}" 替換為 您創建提供者時使用的值
      例如,如果您的 Trend Vision One 區域是美國,請使用 cloudaccounts-us.xdr.trendmicro.com
      對於字串 "arn:aws:iam::${AWSAccountID}:root",將 ${AWS::AccountID} 替換為您的 AWS 帳號 ID。
      該字串應遵循格式 "arn:aws:iam::1xxxxxxxxxx1:root"
      在以"urn:visionone:identity:..."開頭的字串中,替換以下參數:
      • ${visionOneRegion}:您使用的 Trend Vision One 區域(us, eu, au, sg, in,jp
      • ${visionOneAccountID} 您的 Trend Vision One 業務 ID。請確保替換兩個實例。
      如果您的 Trend Vision One 區域是美國,字串看起來像 "urn:visionone:identity:us:1#####1:account/1#####1"
    6. 點選下一步
    7. Add permissions畫面上,搜尋您建立的政策並選取兩者。
      CAM-AWSManual_Policies=GUID-54c2c4b9-3745-48cb-8e71-9f93ff3f502f.png
    8. 點選下一步
    9. Name, review, and create 畫面上,於 Role name 輸入 VisionOneRole
    10. Step 3: Add tags下,添加以下標籤。
      金鑰
      VisionOne功能
      基礎
      VisionOneFormationStackName
      Vision-One-雲端帳戶管理
      VisionOneFormationStackRegion
      輸入您想要部署資源的 AWS 區域。例如,us-east-1
      CAM-AWSManual_Tags=GUID-40740a18-cc31-4564-a265-ff1c55a20d37.png
    11. 點選Create role
    12. 創建完成後,點選您創建的角色名稱。
    13. 在角色詳細資訊畫面中,複製 ARN 以在後續步驟中使用新增帳戶 API。
  6. 使用新增帳戶 API 將您的 AWS 帳戶連接到雲端帳戶應用程式。
    1. 自動化中心訪問 API,或複製以下代碼進行自定義。
      import requests
      import json
      
      url_base = 'https://api.xdr.trendmicro.com'
      url_path = '/beta/xdr/cam/awsAccounts'
      token = 'API Keys'
      
      query_params = {}
      headers = {
          'Authorization': 'Bearer ' + token,
          'Content-Type': 'application/json;charset=utf-8'
      }
      body = {
          'roleArn': 'YOUR_ROLEARN (string)',
          'name': 'YOUR_NAME (string)',
          'description': 'YOUR_DESCRIPTION (string)',
          'features': 'YOUR_FEATURES (array)',
          'connectedSecurityServices': [
              {
                  'name': 'YOUR_NAME2 (string)',
                  'instanceIds': 'YOUR_INSTANCEIDS (array)'
              }
          ]
      }
      
      r = requests.post(url_base + url_path, params=query_params, headers=headers, json=body)
      
      print(r.status_code)
      for k, v in r.headers.items():
          print(f'{k}: {v}')
      print('')
      if 'application/json' in r.headers.get('Content-Type', '') and len(r.content):
          print(json.dumps(r.json(), indent=4))
      else:
          print(r.text)
    2. 請在 API 代碼中提供以下參數的值。
      參數
      roleArn
      名稱
      該帳戶在雲端帳戶應用程式中顯示的名稱
      名稱在雲端帳戶應用程式中必須是唯一的。
      描述
      該帳戶在雲端帳戶應用程式中的描述
      功能
      將此值留空
      如果您已配置至少一個伺服器和工作負載保護實例,則必須提供 connectedSecurityServices 的參數。
      參數
      名稱
      工作負載
      instanceIds
      您要與已連接的 AWS 帳戶關聯的伺服器和工作負載保護實例的 Instance ID
      您可以在 Trend Vision One 控制台中,通過前往 Service ManagementProduct Instance 找到實例 ID。
      重要
      重要
      您只能將一個伺服器和工作負載保護實例與一個 AWS 帳戶連接關聯。
    3. 呼叫新增帳戶 API。
    雲端帳戶應用程式連接到您的 AWS 帳戶。您可以在雲端帳戶應用程式中驗證連接,或通過調用 Get Connected Accounts API 來驗證連接。