IICS Secure AgentをWindows環境にインストールしてみる(2023年版)
データアナリティクス事業本部の鈴木です。
IICSのSecure AgentをWindows環境にインストールしたい機会がありました。
以前、以下のように梶原裕さんが記事を書いてくれていましたが、少し時間も経っているので改めて手順を実施してみました。
前提
Windows環境でのSecure Agent利用について
Secure AgentはWindowsのプラットフォームでも動作可能です。
『Data Integration』のガイドのうち、『Secure Agent requirements on Windows』のページに要件の記載があります。
OSの選び方についてですが、下記のページにProduct Availability Matrix (PAM)をみてくださいという案内があったので、ページにアクセスしてPAMを確認しました。
記事執筆時点ではWindowsのプラットフォームは10 Enterprise
・2016 Server
・2019 Server
のOS Versionがあったので、今回は2019 Server
にて構築しました。
環境構築先について
今回はAmazon EC2上に構築しました。冒頭で紹介したブログに記載のCloudFormationテンプレートで実施しましたが、EC2に付与するIAMロールでは、パラメータで渡す名前のS3バケットへのアクセスを許可したので、改めて記載します。
なお、あくまで構築手順確認用のテンプレートなので、運用される際はよりセキュアなネットワーク構成にしてください。
AWSTemplateFormatVersion: 2010-09-09 Description: Windows Server for IICS Secure Agent Parameters: Prefix: Description: Prefix Type: String AZ1: Description: AZ1 Type: String Default: a WorkS3Bucket: Description: Key of S3 bucket Type: String LatestWindowsAmiId : Type : 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' AllowedValues: - '/aws/service/ami-windows-latest/Windows_Server-2016-Japanese-Full-Base' - '/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base' - '/aws/service/ami-windows-latest/Windows_Server-2019-Japanese-Full-Base' Default: '/aws/service/ami-windows-latest/Windows_Server-2019-Japanese-Full-Base' KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instances Type: String MinLength: '1' MaxLength: '64' AllowedPattern: '[-_ a-zA-Z0-9]*' ConstraintDescription: can contain only alphanumeric characters, spaces, dashes and underscores. Resources: #----------------------------------------------------------------------------- # VPC #----------------------------------------------------------------------------- VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 192.168.0.0/24 EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: !Sub "${Prefix}-vpc" PublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub "${Prefix}-Public-rtb" PublicSubnet: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub "${AWS::Region}${AZ1}" VpcId: !Ref VPC CidrBlock: 192.168.0.0/28 Tags: - Key: Name Value: !Sub "${Prefix}-Public-subnet" PublicSubnetAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref PublicSubnet RouteTableId: !Ref PublicRouteTable PublicRoute: Type: AWS::EC2::Route DependsOn: AttachGateway Properties: RouteTableId: Ref: PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: Ref: InternetGateway InternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Application Value: Ref: AWS::StackId - Key: Network Value: Public AttachGateway: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: Ref: VPC InternetGatewayId: Ref: InternetGateway #----------------------------------------------------------------------------- # EC2 Instance #----------------------------------------------------------------------------- InstanceWindows: Type: "AWS::EC2::Instance" Properties: IamInstanceProfile: !Ref ServerProfile ImageId: !Ref LatestWindowsAmiId InstanceType: m5a.xlarge KeyName: Ref: KeyName BlockDeviceMappings: - DeviceName: "/dev/sda1" Ebs: VolumeType : 'gp2' VolumeSize: 100 NetworkInterfaces: - AssociatePublicIpAddress: true DeviceIndex: "0" SubnetId: !Ref PublicSubnet UserData: Fn::Base64: | <script> @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" tzutil.exe /s "Tokyo Standard Time" Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -name "HideFileExt" -Value 0 Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -name "Hidden" -Value 1 Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False choco install awscli -y choco install GoogleChrome -y choco install vscode -y </script> Tags: - Key: Name Value: !Sub "${Prefix}-Windows-Instance" #----------------------------------------------------------------------------- # IAM #----------------------------------------------------------------------------- ServerRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ec2.amazonaws.com" Action: - "sts:AssumeRole" ManagedPolicyArns: - "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" S3BucketPolicyForSSM: Type: AWS::IAM::Policy Properties: PolicyName: S3BucketPolicyForSSM Roles: - !Ref ServerRole PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "s3:GetObject" Resource: - !Sub "arn:aws:s3:::aws-ssm-${AWS::Region}/*" - !Sub "arn:aws:s3:::aws-windows-downloads-${AWS::Region}/*" - !Sub "arn:aws:s3:::amazon-ssm-${AWS::Region}/*" - !Sub "arn:aws:s3:::amazon-ssm-packages-${AWS::Region}/*" - !Sub "arn:aws:s3:::${AWS::Region}-birdwatcher-prod/*" - !Sub "arn:aws:s3:::patch-baseline-snapshot-${AWS::Region}/*" S3BucketPolicy: Type: AWS::IAM::Policy Properties: PolicyName: S3BucketPolicy Roles: - !Ref ServerRole PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "s3:*" Resource: - !Sub "arn:aws:s3:::${WorkS3Bucket}" - !Sub "arn:aws:s3:::${WorkS3Bucket}/*" ServerProfile: Type: "AWS::IAM::InstanceProfile" Properties: Path: "/" Roles: - Ref: ServerRole InstanceProfileName: !Sub "${Prefix}-Server"
やってみる
1. EC2キーペアの作成
まずAWSのマネジメントコンソールからEC2に接続するためのキーペアを作成しました。これは事前に作成するようにCloudFormationテンプレートを作成しているためです。
EC2のキーペアを作成
からキーペアを作成し、自動的にダウンロードされた.pem
ファイルを保存しておきました。
2. EC2およびネットワークリソースの作成
先に記載したCloudFormationテンプレートを使ってリソースを作成しました。
LatestWindowsAmiId
は/aws/service/ami-windows-latest/Windows_Server-2019-Japanese-Full-Base
としました。
3. Windows Serverへのアクセス
EC2が起動したら、EC2のコンソールの接続
からインスタンスに接続
画面を開き、RDPクライアント
タブでFleet Managerを使用して接続する
を選択し、Fleet Manager Remote Desktop
を押しました。
ノードIDが接続したいインスタンスのものであることを確認し、認証タイプをキーペア
として、ローカルに保存しておいたキーファイルを選択してConnect
を押して接続しました。
4. インストーラーの準備
セキュアエージェントのインストーラーの準備をしました。
セキュアエージェントを追加したい組織のユーザーでIICSにログインし、管理者
のランタイム環境
よりSecure Agentのダウンロード
を押しました。
Secure Agentのダウンロード
のポップアップが出るので、プラットフォームはWindows 64
を選び、インストールトークン
を控えて、ダウンロード
を押して、インストーラーをダウンロードしました。
なお、インストールトークン
は後の手順で使用します。
インストーラーはWindows Serverへ転送します。方法はなんでもいいのですが、私の場合はEC2がアクセス権のあるS3バケットにアップロードし、Windows ServerからAWS CLIにてダウンロードしました。
5. インストーラーの実行
インストーラーを実行してSecure Agentをインストールしました。
まずインストーラーをダブルクリックして起動しました。日本語
を選んでOKを押しました。
インストールフォルダの選択はデフォルトとして次に進みました。
インストール前のサマリを確認し、インストール
を押しました。
インストールが始まるので、正常に終わることを確認しました。
完了すると、Secure Agentの登録を求められるので以下を入力して登録
を押しました。
- ユーザー名: インストーラーのダウンロードの際に使ったIICSのユーザー名
- インストールトークン: インストーラーのダウンロード時に控えたインストールトークン
Secure Agent Coreが実行されている旨が表示されればインストールは完了です。
しばらく待ってランタイム環境をIICSのコンソールから確認すると、インストールしたSecure Agent用の環境が追加されており、ステータスが実行中
となりました。実行中とならない場合は、セキュアエージェントの再起動などをするとよいと思います。
6. アセットの動作確認
新しく作成したセキュアエージェントでアセットが実行できるか確認しました。
今回は以前に作っておいたマッピングタスクを実行できるか確認しました。
マッピングタスクを開き、ランタイム環境
を新しいものに変えました。
このマッピングではS3接続を使っていたので、S3接続の方のランタイム環境も変更しました。
マッピングタスクを実行し、指定したランタイム環境で正常に終了したことを確認しました。
最後に
2023年時点での、Amazon EC2上のWindows Server2019にIICSのSecure Agentをインストールする手順例をまとめました。参考になりましたら幸いです。