実践teleport
teleportについては過去記事を参照してください。
teleport動作構成
バックアップ
/etc/teleport.yaml
にteleportの起動オプションが記載されている。
/var/lib/teleport/
ディレクトリにteleportの設定データが入る。
デーモン起動
Ubuntuの場合は/etc/systemd/system/teleport.service
にSystemd unit fileを作成してsystemctl daemon-reload
を実行。
systemctlコマンドが利用できるようになるので自動起動設定をしておく。
systemctl enable teleport
teleport ユーザーとロールの紐づけ
ローカルユーザーの場合はユーザーそのものにRole紐づけ項目がある。
SSOユーザーの場合はAuth Connectors
のspec.teams_to_logins[].logins[]
に紐づけるRoleの一覧を設定する。
teleport デフォルトロール
インストール直後では初期ユーザーが利用できる。
初期ユーザーにはデフォルトロール「access」「editor」が付与されている。
teleport サーバー権限の設定
root等別のアカウントにログインできるようにするにはRoleを別途作成する。
Roleのyamlの中でspec.allow.logins
にログインを許可するアカウント名を指定する。
kind: role
metadata:
id: 1653xxxxxxxxxxx0568
name: server-admin
spec:
allow:
logins:
- '{{internal.logins}}' ←ログインユーザーと同じ名前のユーザーが対象サーバー上に存在した場合、そのユーザーでログインできるようになる。
- root ←サーバーのrootユーザーへのログイン許可
node_labels:
'*': '*' ←ラベル指定で権限付与対象のサーバーを指定。サーバーのラベルは対象サーバーの`/etc/teleport.yaml`に設定※起動設定によってConfigの場所が違う場合もある。
~省略~
terraform
で管理することも可能。
teleport公式DOC
teleport k8s権限設定
以下4ステップでいける。
- 通信を許可する: teleport-proxy => k8s-api:6443
- 通信を許可する: k8s-node -> teleport-proxy:443
- teleport-roleの
spec.allow.kubernetes_groups[]
かspec.allow.kubernetes_users[]
とClusterRoleBindingのsubjectsを紐づける - helmでインストール実施。
teleport database権限設定
teleport proxy
にDatabaseへの接続設定を入れることで接続できる。※/etc/teleport.yaml
を編集して再起動すれば良い。
teleportから常にアクセスできる状態を維持し、teleportがアクセス権限の管理を代行するというコンセプトを理解すればとっつきやすくやるのではないかと思われる。
AWSへの接続の場合はAWS用の設定がある。
Azureへの接続の場合はマネージドID認証を使用せよとのこと。teleport管理者のみが利用できる踏台VMを用意してここにteleport proxy
を入れて管理するのがよさそう。
GoogleCloudもIAM ServiceAccount
というSPと似たような機能を使う。GCPの場合は環境変数GOOGLE_APPLICATION_CREDENTIALS
でServiceAccountKeyのページからダウンロードしてきたjsonファイルのパスを指定するとのこと。※公式DOC
teleport apps権限設定
DBと同じくteleport proxy
にWEBアプリへの接続設定を入れることで接続できる。※/etc/teleport.yaml
を編集して再起動すれば良い。
以下できること。
- 接続先アプリケーションにJWTトークンを送信できるので認証統合することも可能。
- ログインすると短寿命のクライアント証明書が発行されるが、tshコマンドで証明書が発行されたパスを取得することができる。
- AWSコンソールの認証統合に利用可能。
teleport desktop
WindowsのRDP接続機能。
ActiveDirectoryドメインへの接続が必須。
ドキュメントにはWindowsのみ可能でxrdp等Linuxでは利用できないとあるが、XRDPをADで認証できればいけるかもしれない。
【前半】ACTIVEDIRECTORY認証でXRDPする参考サイト※英語 – XRDP x AD認証
【後半】ACTIVEDIRECTORY認証でXRDPする参考サイト※英語 – XRDP x SSSDによる承認
とはいえRDP使うならWindowsだろうから気にしなくてもよさそう。
まとめ
流し読みでおおよそセットアップできそうな感じにまとめてみた。
とにかく/etc/teleport.yaml
にプロキシ設定を書いていく、という基本構成がわかっていればだいぶ導入のハードルは下がるのではないかと思う。