
IICS Secure AgentをWindows環境にインストールしてみる(2023年版)
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
データアナリティクス事業本部の鈴木です。
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をインストールする手順例をまとめました。参考になりましたら幸いです。






