AWS EC2ディスカバリ
EC2インスタンスを検出して接続
概要
Keeper Connection ManagerはAmazon AWSと連携し、EC2インスタンスに対する自動検出と接続を実行します。これにより、手動で何も設定しなくても、クラウド環境内の任意のEC2インスタンスに素早く簡単に接続できるようになります。他の接続と同様に、EC2インスタンス接続は特別に許可されるもので、エンドユーザーは根底をなすクレデンシャルにアクセスできないことになります。
有効化されると、以下に示すように、EC2インスタンスがKeeper Connection Managerのホーム画面に表示されます。
連携による機能
AWS環境でのEC2インスタンスの即時検出
定義したユーザーグループへの権限の制限
ファイルシステムまたはKeeperボルトによるPEMファイルの管理
AWSの設定
Keeper Connection ManagerをAmazon AWSと連携するには、ユーザーを作成して、インスタンス情報を読み取る権限を持つロールポリシーを割り当てる必要があります。権限を最小限に抑えたポリシーの例を以下に示します。
ユーザーに権限を割り当てた後、アクセスキーを作成します。
インストール
グループの作成
環境を設定する前に、検出されたインスタンスにアクセスできるユーザーに割り当てられた「AWS EC2管理者(AWS EC2 Administrators)」というグループがあることを確認します。グループ名は、AWS_DISCOVERY_ADMIN_GROUP環境変数を使用してカスタマイズすることもできます。
Dockerの自動メソッド
Keeper Connection Manager環境を更新して、この機能をサポートするには、/etc/kcm-setup/docker-compose.yml
にあるDocker Composeファイルを編集する必要があります。
(1) コンテナを停止
ローカルインスタンスに変更を加える前に、コンテナを停止することをお勧めします。
(2) Docker Composeを編集
次に、docker composeファイル/etc/kcm-setup/docker-compose.yml
を編集し、必要な環境変数とボリュームのプロパティを追加します。たとえば、以下をご参照ください。
Keeperボルトにクレデンシャルを保存(オプション)
KCMでSecrets Managerボルト接続を使用している場合は、pemファイルまたは秘密鍵をKeeperボルトから動的に取得できます。_この方法を使用する場合、pemファイルのボリュームマウントを作成する必要はありません。_詳細は、EC2 Cloud Connectorのドキュメントをご参照ください。
環境変数
AWS_DISCOVERY_ACCESS_KEY_ID
AWSでの認証に使用する必要のあるAWSアカウントのアクセスキーID(必須)。
AWS_DISCOVERY_SECRET_KEY
アクセスキーに関連付けられた秘密鍵(必須)。
AWS_DISCOVERY_REGIONS
us-west-1、us-east-1
などのEC2インスタンスを照会するリージョンのカンマ区切りリスト(必須)。
AWS_DISCOVERY_INSTANCE_BASE_PATH
利便性を考慮し、EC2インスタンスを格納するために使用する必要のある組織的な接続グループの名前。デフォルトでは、「Amazon EC2」になります(オプション)。
AWS_DISCOVERY_ADMIN_GROUP
すべてのユーザーが検出されたEC2インスタンスを表示するために必要なKeeper Connection Managerのユーザーグループの名前。デフォルトでは、「AWS EC2 Administrators」という名前のグループになります。これは、Azure ADまたはその他のディレクトリとの連携からプロビジョニングされたグループに割り当てることもできます。
AWS_DISCOVERY_RECORD_CONNECTIONS_BY_DEFAULT
「true」に設定すると、すべての接続で画面記録がデフォルトで有効になります。接続セッションの記録は、「kcm:record
」EC2インスタンスタグを使用して個々のマシンレベルで設定することもでき、「true」または「false」に設定して、接続記録を明示的に有効化または無効化できます。
AWS_DISCOVERY_KSM_CONFIG
このKeeper Secrets Manager設定は、PEMファイルを格納するためのKeeperボルトとの連携を実現します。詳細は、EC2 Cloud Connectorのドキュメントをご参照ください。
(3) .pemファイルをguac_keysフォルダにコピー
Docker Composeの例では、ローカルファイルの場所/var/lib/guac_keys/
でボリュームのマッピングを確認できます。これはKCMホスト内のフォルダで、目的のインスタンスへの接続を確立するために必要なすべてのSSH鍵ファイルをここに配置する必要があります。Windowsインスタンスは、管理者パスワードの復号化に使用される.pemファイルもコピーする必要があります。KCMは、EC2インスタンスのメタデータに基づいて、接続を確立するための適切なファイルを選択します。
ファイルの権限を確認し、コンテナが鍵ファイルを確実に読み取れるようにするには、以下の鍵ファイルの権限セクションをご参照ください。
KCMでSecrets Managerボルト接続を使用している場合は、pemファイルまたは秘密鍵をKeeperボルトから動的に取得できます。詳細は、EC2 Cloud Connectorのドキュメントをご参照ください。
(4) コンテナをアップグレード
Docker自動インストールメソッドを使用する場合、基盤となるソフトウェアをすべて更新するには、以下のコマンドを実行します。
これにより、更新後に自動的にコンテナが開始されます。
Docker Composeメソッド
Keeper Connection Manager環境を更新して、この機能をサポートするには、Docker Composeのカスタムファイルの「guacamole」セクションを編集する必要があります。
(1) コンテナを停止
ローカルインスタンスに変更を加える前に、docker-composeで通常行うように、コンテナを停止することをお勧めします。
(2) Docker Composeを編集
次に、docker composeファイルを編集し、必要な環境変数とボリュームプロパティをguacamole
セクションに追加します。たとえば、以下をご参照ください。
環境変数
AWS_DISCOVERY_ACCESS_KEY_ID
AWSでの認証に使用する必要のあるAWSアカウントのアクセスキーID(必須)。
AWS_DISCOVERY_SECRET_KEY
アクセスキーに関連付けられた秘密鍵(必須)。
AWS_DISCOVERY_REGIONS
us-west-1、us-east-1
などのEC2インスタンスを照会するリージョンのカンマ区切りリスト(必須)。
AWS_DISCOVERY_INSTANCE_BASE_PATH
利便性を考慮し、EC2インスタンスを格納するために使用する必要のある組織的な接続グループの名前。デフォルトでは、「Amazon EC2」になります(オプション)。
AWS_DISCOVERY_ADMIN_GROUP
すべてのユーザーが検出されたEC2インスタンスを表示するために必要なKeeper Connection Managerのユーザーグループの名前。デフォルトでは、「AWS EC2 Administrators」という名前のグループになります。これは、Azure ADまたはその他のディレクトリとの連携からプロビジョニングされたグループに割り当てることもできます。
AWS_DISCOVERY_RECORD_CONNECTIONS_BY_DEFAULT
「true」に設定すると、すべての接続で画面記録がデフォルトで有効になります。接続セッションの記録は、「kcm:record
」EC2インスタンスタグを使用して個々のマシンレベルで設定することもでき、「true」または「false」に設定して、接続記録を明示的に有効化または無効化できます。
(3) .pemファイルをguac_keysフォルダにコピー
Docker Composeの例では、ローカルファイルの場所/var/lib/guac_keys/
でボリュームのマッピングを確認できます。これはKCMホスト内のフォルダで、目的のインスタンスへの接続を確立するために必要なすべてのSSH鍵ファイルをここに配置する必要があります。Windowsインスタンスは、管理者パスワードの復号化に使用される.pemファイルもコピーする必要があります。KCMは、EC2インスタンスのメタデータに基づいて、接続を確立するための適切なファイルを選択します。
ファイルの権限を確認し、コンテナが鍵ファイルを確実に読み取れるようにするには、以下の鍵ファイルの権限セクションをご参照ください。
(4) コンテナをアップグレード
Dockerカスタムインストールメソッドを使用して、基盤となるソフトウェアをすべて更新するには、コンテナをアップグレードします(docker-compose.ymlがカレントディレクトリにあることが前提です)。
これにより、更新後に自動的にコンテナが開始されます。
Linux高度メソッド
Linux高度インストールメソッドを使用してKeeper Connection Managerをインストールした場合は、次の手順に従ってAWS EC2ディスカバリ機能を有効化します。
(1) KCM Cloud Connectorパッケージをインストール
Linux高度インストールメソッドを使用している場合は、以下のように「yum install」を使用してKCM Cloud Connectorパッケージをインストールできます。
(2) Guacamoleプロパティファイルを編集
/etc/guacamole/guacamole.properties
を編集して、AWS Cloud Connector機能の必須プロパティとオプションプロパティを追加します。
使用可能なプロパティ
aws-discovery-access-key-id
AWSでの認証に使用する必要のあるAWSアカウントのアクセスキーID(必須)。
aws-discovery-secret-key
アクセスキーに関連付けられた秘密鍵(必須)。
aws-discovery-regions
us-west-1、us-east-1
などのEC2インスタンスを照会するリージョンのカンマ区切りリスト(必須)。
aws-discovery-instance-base-path
利便性を考慮し、EC2インスタンスを格納するために使用する必要のある組織的な接続グループの名前。デフォルトでは、「Amazon EC2」になります(オプション)。
aws-discovery-admin-group
すべてのユーザーが検出されたEC2インスタンスを表示するために必要なKeeper Connection Managerのユーザーグループの名前。デフォルトでは、「AWS EC2 Administrators」という名前のグループになります。これは、Azure ADまたはその他のディレクトリとの連携からプロビジョニングされたグループに割り当てることもできます(オプション)。
aws-discovery-record-connections-by-default
このプロパティを「true」に設定すると、すべての接続で画面記録がデフォルトで有効になります(オプション)。
接続セッションの記録は、「kcm:record
」EC2インスタンスタグを使用して個々のマシンレベルで設定することもでき、「true」または「false」に設定して、接続記録を明示的に有効化または無効化できます。
(3) .pemファイルをguac_keysフォルダにコピー
LinuxインスタンスへのアクセスまたはWindowsパスワードの復号化に使用する秘密鍵に必要なPEMファイルをすべて/etc/guacamole/cloud-connector-secrets/aws/
に追加します。
(4) Guacamoleサービスを再起動
新しいパッケージは、ウェブアプリケーションが再起動されるまで有効になりません。
タグを使用したインスタンス設定
インスタンスごとに割り当てられたAWS EC2タグを使用して接続を設定し、デフォルトとメタデータを上書きおよびカスタマイズできます。
使用可能なタグ
kcm:username
インスタンスに接続するときに使用するユーザー名。
このタグで、「centos」や「ec2-user」などのインスタンスのログインユーザー名を定義します。KCMは、インスタンスのAMIに基づいて正しいユーザー名を選択しようとしますが、これを使用して誤った想定を訂正できます。
kcm:organize
kcm:organize
他の接続間でインスタンスを編成するために使用する接続グループのフルパス。
このタグにより、すべてのインスタンスを含む接続グループの範囲を超えてEC2インスタンスをさらに編成できます。デフォルトでは、検出されたすべてのインスタンスは、「Amazon EC2」と呼ばれる最上位の接続グループ内に配置されますが、それ以上は編成されません。たとえば、kcm:organize
を「Databases」のように設定すると、そのインスタンスは、「Amazon EC2」の下の「Databases」接続グループ内に配置されます。kcm:organize
を「Databases/MySQL」に設定すると、そのインスタンスは、「Databases」の下の「MySQL」接続グループ内に配置され、それ自体がメインの「Amazon EC2」グループの配下になります。
これらの接続グループはすでに存在している必要は_なく_、実際にはメモリ内にのみ存在します(EC2サポートによって動的に維持されます)。
kcm:record
kcm:record
インスタンス接続セッションを記録するか否かを示すフラグ。
このタグは、KCM環境プロパティaws-discovery-record-connections-by-default
のデフォルトの画面記録設定を上書きします。このタグが「true」の値を持つ場合、接続は記録され、「false」の場合、接続は記録されません。タグが存在しない場合、または他の値に設定されている場合は、設定されたデフォルトの記録動作が使用されます。
鍵ファイルの権限
ファイル名
鍵ファイルの名前は、EC2コンソールの表示どおり正確に付ける必要があります(MyServerなど)。
鍵ファイルの名前には、ファイル拡張子**.pem**を付ける必要があります(MyServer.pemなど)。
権限
「guacamole」dockerコンテナ内のサービスは、「guacamole」ユーザーによって実行されます。「guacamole」ユーザーが共有鍵ファイルに読み取りアクセスできるように、ボリュームマウントでファイルのアクセス権限を適切に設定する必要があります。
例:/var/lib/guac_keys/
配下のホストの場合、ファイルはec2-userまたは何らかの設定ユーザーが所有している場合もあります。
コンテナ内では、ファイルの所有者表示は、「1000」またはその他のユーザーIDになっている場合もあります。
ホストとguacamoleコンテナ間のファイルのアクセス権限を解決する方法は2つあります。
(1) guacamole docker定義の環境変数GUACAMOLE_UIDとGUACAMOLE_GIDを使用して、アクセス権限をマッピングできます。
Last updated