AWS Systems Manager Distributor を使用すると、アカウントにソフトウェアパッケージを安全に保存して配布できます。このツールをTrend Cloud One Workload Securityと統合することで、Trend Cloud One Workload Security Agentを複数のプラットフォームに分散させ、管理対象インスタンスへのアクセスを制御し、配信を自動化できます。
次の図は、統合アーキテクチャを示しています。
aws-ssm-architecture=84ad74c6-d585-4815-9add-14c199f5b663.png
統合すると、Trend Cloud One Workload Securityエージェントは、初期設定で有効になっているすべての地域の組織単位メンバーアカウントに分散されます。
機能レベルでは、次の処理が実行されます。
  • AWS CloudFormationスタックは、AWS CloudFormationテンプレートとして組織の管理アカウントにデプロイされます。
  • カスタムリソースは、Trend Cloud One Workload SecurityエージェントのアクティベーションURL、マネージャのURL、テナントID、およびトークンを取得します。
  • カスタムリソースは、AWS Organizationに含まれるすべての組織単位のすべてのIDを取得します。
  • デプロイ時に、提供された組織単位のIDとエージェントパラメータに基づいて、すべてのAWSアカウントにStackSetが作成されます。
  • 各AWSリージョンのAWS Systems Managerパラメータストアに4つのパラメータが作成されます。
  • AWS Systems Managerの関連付けは、作成時に実行され (cronも同様)、Trend Cloud One Workload Securityエージェントをすべての ['*'] インスタンスにデプロイします。

要件

統合を開始する前に、Trend Cloud OneアカウントのためのAPIキーを持っていることを確認してください。
さらに、次の条件が満たされていることを確認します。
  • Amazon EC2インスタンスには、AWS Systems Managerエージェントがインストールされています。詳細については、サポートされるオペレーティングシステムを参照してください。
  • Amazon EC2インスタンスには、必要なAWS Systems Managerのアクセス許可が付与されています。詳細については、Systems Managerのインスタンス権限の設定を参照してください。
  • AWS CloudFormationスタックインスタンスが組織内または組織内の組織単位内に存在する場合でも、StackSetsはAWS CloudFormationスタックインスタンスを組織の管理アカウントにデプロイしません。詳細については、DeploymentTargetsを参照してください。

インストール/アンインストール

ダッシュボードからデプロイするには、組織の管理アカウントでAWS CloudFormationテンプレートを起動し、テンプレートパラメータを次の値に設定します。
  • [AccountAdminStatus]
    • StackName - AWS CloudFormationスタックの名前を指定します。
    • AccountAdminStatus - 組織内の委任管理者アカウントを使用してソフトウェアパッケージを管理するかどうかを指定します。 AWS CloudFormation StackSetのIAMロールを事前にプロビジョニングする必要があります。
  • [対象]
  • [Cloud One Workload Security]
    • CloudOneAPIKey - Trend Cloud OneアカウントのAPIキーを指定します。詳細については、要件を参照してください。
    • Trend Cloud Oneアカウントのリージョン。
CLI経由でデプロイするには、次のコマンドを実行します。
#!/bin/bash
export STACK_NAME=ABI-TM-SSM
export TEMPLATE_URL=https://immersionday-workshopstrendmicro.
s3.amazonaws.com/abi/main.template.yaml
export CLOUDONE_API_KEY=<cloudone-api-key>
export CLOUDONE_REGION_ENDPOINT=<cloudone-ws-region-endpoint>
export ACCOUNT_ADMIN_STATUS=<SELF|DELEGATED_ADMIN>
export CRON_JOB="cron(15 10 * * ? *)"
aws cloudformation create-stack \
--stack-name $STACK_NAME \
--template-url $TEMPLATE_URL \
--parameters
ParameterKey=CloudOneAPIKey,ParameterValue=$CLOUDONE_API_KEY \
ParameterKey=CloudOneRegionEndpoint,ParameterValue=$CLOUDONE_REGION_ENDPOI
NT \
ParameterKey=AccountAdminStatus,ParameterValue=$ACCOUNT_ADMIN_STATUS \
ParameterKey=CronJob,ParameterValue="$CRON_JOB" \
--capabilities CAPABILITY_NAMED_IAM
デプロイが失敗した場合、またはスタックを削除することにした場合は、アカウントの統合を含むすべての変更がデプロイ前の状態に戻ります。

必要なAWS権限とリソース

Lambda関数には、次の権限が必要です。
  • secretsmanager:GetSecretValue
  • organizations:ListOrganizationalUnitsForParent
  • organizations:ListRoots
  • logs:CreateLogGroup
  • logs:CreateLogStream
  • logs:PutLogEvents
スタックをデプロイするには、次の権限が必要です。
  • AWS CloudFormationスタックを作成、更新、削除、および説明する権限。
    • cloudformation:CreateStack
    • cloudformation:UpdateStack
    • cloudformation:DeleteStack
    • cloudformation:DescribeStacks
  • AWS CloudFormation StacksSet、StackInstanceを作成、更新、削除、および説明するためのアクセス許可:
    • cloudformation:CreateStackSet
    • cloudformation:CreateStackInstances
    • cloudformation:DescribeStackSet
    • cloudformation:UpdateStackSet
    • cloudformation:UpdateStackInstances
    • cloudformation:DeleteStackSet
    • cloudformation:DeleteStackInstances
    • cloudformation:ListStackInstances
  • Lambda関数の設定を作成、更新、および取得するための権限。
    • lambda:CreateFunction
    • lambda:UpdateFunctionCode
    • lambda:GetFunctionConfiguration
  • 組織内のすべての組織部門IDを取得する権限:
    • organizations:ListRoots
    • organizations:ListOrganizationalUnitsForParent
  • Lambda関数のIAMロールを作成する権限、およびポリシーをロールにアタッチおよびデタッチする権限。
    • iam:CreateRole
    • iam:CreatePolicy
    • iam:AttachRolePolicy
    • iam:DeleteRolePolicy
  • Amazon CloudWatchのロググループとストリームを作成する権限、およびLambda関数からAmazon CloudWatchのログにログを書き込む権限。
    • logs:CreateLogGroup
    • logs:CreateLogStream
    • logs:PutLogEvents
  • AWS S3バケットからコードをダウンロードする権限。
    • s3:GetObject