cloud-init で Device Protection を展開する
cloud-init は新しいマシンの初回起動時に実行されるため、誰かがログインする前に Device Protection をインストールしておく最も簡単な方法です。AWS、Azure、GCP、OpenStack、Proxmox、素の libvirt イメージなど、cloud-init が動作する環境であればどこでも利用できます。
すべての方法で共通して使用するトークン、パッケージ、インストールオプションについては、まず Linux 向け Device Protection のインストールをお読みください。トークンの扱い、再起動、繰り返し実行、デバイスの識別などその他の事項は Linux Rollout Reference で説明しています。
ユーザーデータを設定する
エージェントはディストリビューションのリポジトリで公開されていないため、packages: モジュールではインストールできません。パッケージをダウンロードし、runcmd からインストールしてください。
#cloud-config
runcmd:
- curl -fsSLo /tmp/aikido.deb https://github.com/AikidoSec/safechain-internals/releases/latest/download/EndpointProtection-amd64.deb
- AIKIDO_TOKEN=<your-token> apt-get install -y /tmp/aikido.deb
- rm -f /tmp/aikido.deb#cloud-config
runcmd:
- curl -fsSLo /tmp/aikido.rpm https://github.com/AikidoSec/safechain-internals/releases/latest/download/EndpointProtection-amd64.el9.rpm
- AIKIDO_TOKEN=<your-token> dnf install -y /tmp/aikido.rpm
- rm -f /tmp/aikido.rpmバージョン 10 では el10 パッケージを使用してください。
パッケージ自体が aikido-endpoint-protection サービスを有効化して起動するため、そのための追加設定は不要です。
パッケージ名がそれぞれ異なるため、1 つのドキュメントは 1 つのイメージファミリー、1 つのアーキテクチャ、そして Red Hat 系イメージの場合は 1 つのメジャーバージョンに対応します。runcmd に判定ロジックを追加するのではなく、イメージごとにドキュメントを用意してください。
runcmd に直接記述したトークンは秘匿されません。ユーザーデータはマシン上で動作するあらゆるものからインスタンスメタデータサービス経由で読み取り可能であり、cloud-init は実行したコマンドを /var/log/cloud-init-output.log に書き込みます。簡単なテスト以外の用途では、代わりに起動時にシークレットストアからトークンを取得してください。
初回起動の最後に再起動する
runcmd は起動処理の後半で実行されます。これは、インストール時にシステム全体に設定される Aikido CA 環境変数に関係します。起動後のログインではこれらが反映されますが、コンテナランタイムやビルドエージェントなど、同じ起動中にそれより前に開始されたサービスには反映されません。マシンでそのようなサービスを実行している場合は、インストール完了後に一度再起動するよう power_state を追加してください。
#cloud-config
runcmd:
- curl -fsSLo /tmp/aikido.deb https://github.com/AikidoSec/safechain-internals/releases/latest/download/EndpointProtection-amd64.deb
- AIKIDO_TOKEN=<your-token> apt-get install -y /tmp/aikido.deb
- rm -f /tmp/aikido.deb
power_state:
mode: reboot
message: Rebooting to activate Aikido Device Protection
condition: trueロールアウトを確認する
新しいマシンで次を実行します。
cloud-init status --wait
systemctl is-active aikido-endpoint-protection
aikidoctl versionインストールに失敗した場合は、/var/log/cloud-init-output.log にパッケージマネージャーの出力が記録されています。デバイスは デバイス一覧 に Active ステータスで表示されます。
トラブルシューティング
| 問題 | 対処法 |
|---|---|
| パッケージはインストールされるが、デバイスがダッシュボードに表示されない | インストールコマンドに AIKIDO_TOKEN が設定されていませんでした。構成管理ツールはローカル環境をホストに転送しないため、タスク自体に変数を設定してから、パッケージを再度インストールしてください |
apt または dnf がファイルをインストールせず、リポジトリ内でパッケージを探してしまう | 名前ではなくパスを指定してください: apt install ./EndpointProtection-amd64.deb。先頭の ./ によって、パッケージマネージャーはそれをローカルファイルとして扱います |
| Red Hat 系のホストでインストールが失敗する | ビルドをメジャーバージョンに合わせてください。バージョン 9 では el9 パッケージを、バージョン 10 では el10 パッケージを使用します |
| サービスが実行されていない | systemctl status aikido-endpoint-protection を実行し、次に sudo aikidoctl diagnostics を実行して詳細を送信してください |
| Node.js または uv が依然として Aikido 証明書を拒否する | インストール時に NODE_EXTRA_CA_CERTS と UV_SYSTEM_CERTS がシステム全体に設定されますが、実行中のシェルにはこれらが反映されません。新しいログインシェルを開くか、デバイスを再起動してください |
| トークンが実行出力やログに表示される | ツールのマスキング機能を使用してください: Ansible では no_log、Chef では sensitive true、Puppet では Sensitive() |
| 複数のマシンがデバイス一覧で 1 つのエントリを共有している | それらのマシンは同じ /etc/machine-id で起動しています。Linux のデバイス ID はこのファイルに基づくため、クローン元のイメージでこのファイルをクリアし、初回起動時に systemd に新しいものを書き込ませてください |
| トレイアイコンが表示されない | Ubuntu 以外の GNOME では想定どおりの動作であり、見た目上の問題にすぎません。Tray Icon Support on Linux を参照してください |