KSMを使用したAWS Elastic Container サービス (高度な設定)
ECS (Fargate)サービスを使用してKeeperオートメーターを実行し、機密情報のストレージとして Keeperシークレットマネージャーを実行

概要
本ガイドでは、Fargate上のAmazon ECSでKeeperオートメーターを起動し、Keeperシークレットマネージャー (KSM) で公開Dockerコンテナのシークレット構成を取得する手順を取り扱います。
Keeperのセットアップ
このデプロイではKSMが必要なため、オートメーター公開に必要なKeeperボルトとSSL証明書の準備手順を確認します。
1. SSL証明書
カスタムSSL証明書 の手順でSSL証明書を作成します。
この手順が完了すると、ssl-certificate.pfxとssl-certificate-password.txtの2つのファイルが作成されます。
2. 共有フォルダの作成
ボルトに共有フォルダを作成します。このフォルダは、シークレットマネージャーアプリケーション以外とは共有しません。
3. 添付ファイルの追加
共有フォルダにレコードを作成し、レコードUIDをメモします。SSL証明書とSSL証明書パスワードファイルを共有フォルダのレコードにアップロードします。
4. オートメータープロパティファイルの追加
以下の内容の keeper.properties ファイルをアップロードします。
disable_sni_check=true は、マネージドロードバランサー配下でオートメーターを実行する場合に必要です。
共有フォルダとレコードは以下のようになります。

5. KSMアプリケーションの作成
ボルト内にKeeperシークレットマネージャー (KSM) アプリケーションを作成します。KSMに不慣れな場合は クイックスタートガイド をご参照ください。アプリ名は Automator で問題ありません。

6. KSMアプリケーションを共有フォルダに添付
共有フォルダを編集し、オートメーターアプリケーションをこのフォルダに追加します。

7. KSMデバイス設定の作成
シークレットマネージャーアプリを開き、Devices タブで Add Device をクリックします。base64 構成を選び、ダウンロードしてECSタスク定義で使用します。

AWSのセットアップ
1. VPCの作成
VPCが存在しない場合は、複数のサブネット、ルートテーブル、インターネットゲートウェイを持つ基本的なVPCをセットアップする必要があります。こちらの例では、以下のリソースマップに見られるように、インターネットゲートウェイを備えたVPC内に3つのサブネットが含まれています。

2. CloudWatchロググループの作成
[CloudWatch] > **[ロググループの作成]**に移動します。
ロググループをautomator-logsと名付けます。

3. タスク実行IAMロールの作成
IAM > Create role を開きます。
AWS service を選択します。
次に、Elastic Container Service を検索して選択します。
Elastic Container Service Task を選び、Next をクリックします。

AmazonECSTaskExecution ポリシーを追加し、Next をクリックします。

ロール名を ECSTaskWritetoLogs に設定して作成します。

このロールのARNをメモして以下の手順で使用できるようにします。
本例では arn:aws:iam::373699066757:role/ECSTaskWritetoLogs です。

4. ECSのセキュリティグループを作成
**[EC2] > [セキュリティ グループ]****に移動し、[セキュリティグループの作成]**をクリックします。
Keeperテナントのリージョンに応じて、Keeperクラウドからの HTTPS ポート 443 を許可する受信ルールを作成します。テナント所在地ごとのIP一覧は イングレス要件 をご参照ください。以下の例は米国データセンターです。
テストとトラブルシューティングのため、ワークステーションの外部IPアドレスも追加することを推奨します。
名前を MyAutomatorService などに設定し、Create をクリックします。

US
54.208.20.102/32
34.203.159.189/32
US GovCloud
18.252.135.74/32
18.253.212.59/32
EU
52.210.163.45/32
54.246.185.95/32
AU
3.106.40.41/32
54.206.208.132/32
CA
35.182.216.11/32
15.223.136.134/32
JP
54.150.11.204/32
52.68.53.105/32
セキュリティグループ保存後、受信ルールを再度編集し、HTTPS ポート 443 を追加してドロップダウンからセキュリティグループを選択します。ロードバランサーがヘルス状態を監視し、トラフィックを分散できます。
5. EFS用セキュリティグループの作成
クラスターからEFSへのNFSアクセスを制御する別のセキュリティグループを作成します。
**[EC2] > [セキュリティ グループ]****に移動し、[セキュリティグループの作成]**をクリックします。
MyAutomatorEFSのように名前を設定します。
TypeをNFS、Source をCustomに設定し、ECSクラスター用に前の手順で作成したセキュリティグループを選択します。
**[セキュリティグループの作成]**をクリックします。

以下の手順のためにセキュリティグループIDを控えます。本例では sgr-089fea5e4738f3898 です。
6. 2つのElastic File Systemボリュームを作成
オートメーターは2つの異なるフォルダへのアクセスが必要です。本セットアップ例では、SSL証明書とSSLパスフレーズファイルを保存するために1つのボリュームを作成しています。2つ目のボリュームには、オートメーターサービスのプロパティファイルが保存されます。これら3つのファイルはKeeperのレコードに含まれています。
[AWS] > **[Elastic File System]に移動し、[ファイルシステムの作成]**をクリックします。
automator_configと名付けて、**[作成]**をクリックします。
再び**[Elastic File System]に移動し、[Create file system]をクリックします。automator_settingsと名付けて[作成]**をクリックします。
表示されるファイルシステムID (fs-xxxなど) は、ECSタスク定義で使用されます。
1分後、2つのファイルシステムが利用可能になります。各ファイルシステムを開き、Network タブで Manage をクリックします。

各サブネットのセキュリティグループを手順 5 の MyAutomatorEFS などに変更し、Save をクリックします。作成された両方のファイルシステムに同じネットワーク変更を加えます。

7. Elastic Container Serviceクラスターの作成
Amazon Elastic Container Serviceへ進みます。
**[クラスターの作成]を選択し、クラスター名とVPCを割り当てます。 こちらの例では、デフォルトの[AWS Fargate (サーバーレス)]**インフラストラクチャを使用しています。
Default namespace は
automatorで問題ありませんInfrastructure を AWS Fargate (serverless) に設定します
Create をクリックします
8. ECSタスク定義の作成
任意のテキストエディタで、以下のJSONタスク定義ファイルをコピーして保存します。
JSONファイルに以下の変更を加えます。
本ガイドの冒頭で作成したKeeperシークレットマネージャーのXXXCONFIGXXX値をBase64設定に変更します。
3箇所の
XXXXXを、KSMが参照する共有フォルダ内レコードのUID (SSL証明書、SSL証明書パスワード、設定ファイルを含む) に置き換えます2つのファイルシステム ID (fs-XXX) を、上記の手順からのものに変更します。
ロールIDのXXXをAWSロールに固有のものに変更します。
2箇所のeu-west-1値を、ECSサービスの地域に変更します。
Elastic Container Service > Task definitions > Create Task from JSON を開きます。

既存JSONを削除し、編集したJSONを貼り付けて Create をクリックします

このタスク定義は、インスタンスのCPU/メモリ要件に応じて変更できます。
9. SSL証明書をAWS Certificate Managerにアップロード
AWSのアプリケーションロードバランサーがオートメーターのリクエストに対応するには、SSL証明書が AWS Certificate Managerによって管理されている必要があります。
AWS Certificate Managerへ移動し、**[インポート]**をクリックします。
ご利用のワークステーション上でSSL証明書 (.pfx) ファイルを、 PEMエンコードされた証明書本体、PEMエンコードされた秘密キー、PEMエンコードされた証明書チェーンに変換する必要があります。
.pfxファイルはすでに存在するので以下のopensslコマンドを使用します。ssl-certificate.pfxファイルと証明書パスワードをワークステーションへダウンロードし、以下のコマンドを入力します。
PEMエンコードされた証明書本体の生成
PEMエンコードされた秘密キーの生成
PEMエンコードされた証明書チェーンの生成
3つのファイルの内容を画面へコピーします。

10. ターゲットグループの作成
EC2 > Target Groups を開き、Create target group をクリックします。
Target type で IP Addresses を選択します
ターゲットグループ名にautomatortargetgroupまたは任意の名前を入力します。
ポート443のHTTPプロトコルを選択します。
ECSクラスターを含むVPC を選択します。
HTTP1を選択します。
Health checks で Health check protocol を HTTPS に設定します
Health check path に
/healthを入力しますNext をクリックします
まだターゲットを選択せずに**[ターゲットグループの作成]**をクリックします。
11. アプリケーションロードバランサー (ALB) の作成
**[EC2] > [ロードバランサー] > **[ロードバランサーの作成]****に移動します。
**[Application Load Balancer] > **[作成]****を選択します。
automarnalbなどの任意の名前を割り当てます。
スキームはInternet-facingとなります。
IPアドレスの種類: IPv4
**[ネットワークマッピング]**の箇所で、ECSサービスをホストするVPCとサブネットを選択します。
Security groups で、手順 5 で作成した MyAutomatorService を選択します
**[リスナーとルーティング]**の箇所でHTTPSポート443を選択し、ターゲットグループで前の手順で作成したターゲットグループ (automatortargetgroup) を選択します。
**[セキュアリスナー設定]**で、手順9でAWS Certificate ManagerにアップロードしたACMからのSSL証明書を選択します。
**[ロードバランサーの作成]**をクリックします。
12. ECSサービスの作成
Elastic Container Service > Task definitions から手順 8 のタスクを選択します
タスク定義画面で Deploy > Create Service をクリックします

automatorの既存のクラスターを選択します。
サービス名にautomatorserviceまたは任意の名前を割り当てます。
必要なタスクの数については、とりあえず1に設定します。設定が完了後に実行したいタスクの数を増やせます。
Networking でVPCとサブネットを選択し、セキュリティグループを手順 5 の MyAutomatorService に置き換えます
パブリックIPはONにします。
Load balancing で Load balancer type を Application Load Balancer に設定します
Existing load balancer から手順 11 の automatoralb を選択します
既存のリスナーを使用し、443:HTTPSリスナーを選択します。
既存のターゲットグループを使用し、手順10のターゲットグループを選択します。
Create をクリックします。



数分後にサービスが起動します。
13. DNSの更新
DNS名がRoute53によってホストおよび管理されていると仮定します。
Route53 > レコードの作成または編集に移動します。
Aレコードを作成します。
エイリアスとして設定します。
Route traffic to Alias to Application and Classic Load Balancer を選択します
AWS地域を選択します。
automatoralb Application Load Balancer を選択します。
Simple Routing を選択します
Save をクリックします
以下の手順では、タスクを1件だけ実行した状態でKeeperコマンダーを使用してオートメーターを設定します。
14. Keeperコマンダーのインストール
この時点ではサービスは実行されていますが、まだKeeperと通信できない状態です。
ワークステーション、サーバー、または任意のコンピュータにKeeperコマンダーCLIをインストールします (初期設定のみ)。手順は Keeperコマンダーのインストール をご参照ください。
コマンダーをインストールした後、keeper shellと入力してセッションを開いてからloginコマンドを使用してログインします。オートメーターをセットアップするには、Keeper管理者またはSSOノードを管理する権限を持つ管理者としてログインする必要があります。
15. コマンダーでの初期設定
Keeperコマンダーにログインし、automator createで始まる一連のコマンドを使用してオートメーターを有効にします。
ノード名 (この場合はAzure Cloud) は、以下のように管理コンソールUIから取得します。

コマンドの出力には、IDプロバイダからのメタデータを含むオートメーター設定が表示されます。
以下のようにautomator editコマンドを実行します。これによりURLとスキルが設定されます (team、 team_for_user、device)。
次にキーを交換します。オートメーター公開キーで暗号化されたエンタープライズ秘密キーがオートメーターに提供されます。
新しい設定でオートメーターを初期化します。
サービスを有効にします。
この時点で設定は完了となります。
自動ヘルスチェックには、以下のURLを使用できます。
https://<server>/health
以下はcurlコマンドを使用した例です。
本セットアップ例では、ロードバランサーがターゲットインスタンスにヘルスチェックを転送します。
16. ユーザー体験のテスト
Keeperオートメーターが1件のタスクを実行した状態でデプロイされましたので、エンドユーザーの体験をテストできます。ユーザーがSSO IDプロバイダで認証した後は、承認を求めるプロンプトは必要なくなります。
最も簡単な方法は、ブラウザのシークレットモードでKeeperウェブボルトを開き、クラウドSSOコネクトでログインすることです。デバイス承認のプロンプトは表示されません。




承認が機能しましたので、実行するタスクの数を増やせます。
17. タスク定義の更新
ECS画面でオートメーターサービスを開き、Update Service をクリックし、実行タスク数を設定します


ログと監視
オートメーターログは、ECSサービスの Logs タブまたはCloudWatchで確認できます。

最終更新

