シングルサインオン (SSO) と Windows 認証
シングルサインオン(SSO)を利用すると、Okta や Microsoft Azure など、社内ですでに使用している既存のアカウントで Cockpit にログインできるようになります。また、会社支給の Windows パソコンを使用している場合は、パスワードを入力せずに自動的にログインすることも可能です。
SSO とは? 🎟️
💡 たとえ話:テーマパークの共通リストバンド
多くのアトラクションがある巨大なテーマパークへ遊びに行くところをイメージしてください:
- SSO がない場合: アトラクションに乗るたびに、お財布を取り出して別々のチケットを現金で買う必要があります(Cockpit、社内メール、経理システムなどのたびに毎回パスワードを入力する状態)。
- SSO がある場合: パークの入り口で共通リストバンドをひとつ購入します。乗り物に乗るときは、スタッフがリストバンドをピッ!とスキャンするだけで入場できます。
SAML や OIDC は、このリストバンドの技術規格(バーコード式か、RFIDチップ式かなど)の名称です。
サポートされている SSO プロトコル:
- SAML 2.0: Cockpit を Okta、Keycloak、Ping Identity、または Azure AD などの社内認証サービスと連携させます。
- OpenID Connect (OIDC): Google Workspace や Microsoft Entra ID を使用してスムーズにログインできる軽量な仕組み。
- Windows セッション認証 (Kerberos / 統合 Windows 認証): いわば「VIP パス」です。あなたの PC が会社のネットワーク管理下にある場合、すでに Windows にサインインしていることを Cockpit が検知し、Web 画面にもユーザー名やパスワードの入力なしで自動的にサインインさせます。
1. Windows セッション認証 (Kerberos) のセットアップ
Windows アカウントを使用したパスワードレスログインを有効にするには、Active Directory ドメインコントローラー側の準備と、Cockpit の構成変更を行う必要があります。
ステップ A: Active Directory での事前準備
ネットワーク管理者は、Active Directory ドメインコントローラーで以下のコマンドを実行し、Cockpit 用の「Keytab」ファイルを生成します:
cmd
# 1. Active Directory に Cockpit のウェブサイトを登録します
setspn -a HTTP/cockpit.corp.awan.io svc-cockpit
# 2. セキュリティキーファイルを書き出します (cockpit.keytab として保存します)
ktpass /out cockpit.keytab /princ HTTP/cockpit.corp.awan.io@CORP.AWAN.IO /mapuser svc-cockpit /pass Password123 /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPALステップ B: Cockpit サーバーの設定
- 生成された
cockpit.keytabファイルを Cockpit サーバーの/etc/cockpit/cockpit.keytabにコピーします。 /etc/cockpit/cockpit.confファイルに以下の設定行を追加します:
ini
[auth]
sso_enabled = true
sso_method = "kerberos"
sso_keytab_path = "/etc/cockpit/cockpit.keytab" # keytab ファイルの場所
sso_realm = "CORP.AWAN.IO" # Active Directory ドメイン名
sso_service_principal = "HTTP/cockpit.corp.awan.io@CORP.AWAN.IO"2. SAML 2.0 プロバイダーのセットアップ
Okta、Azure AD、または Keycloak を使用してログインできるように設定する手順は以下の通りです:
- 管理者として Cockpit にログインします。
- Settings > Identity Management > SAML を開きます。
- Metadata Import をクリックし、OktaやAzureからダウンロードしたメタデータ XML ファイルをアップロードします。
- Cockpit は、OktaやAzureの管理画面に入力するための情報(サービスプロバイダー設定)を生成して表示します:
- Entity ID:
https://cockpit.corp.awan.io/api/v1/auth/saml/metadata(この Cockpit アプリの固有の名前) - Assertion Consumer Service (ACS) URL:
https://cockpit.corp.awan.io/api/v1/auth/saml/acs(認証成功後にユーザーが戻る先のアドレス)
- Entity ID:
- ユーザープロファイルの紐付けを設定します:
- Username Attribute:
NameIDやuidなど、ログイン名として使用するメールアドレス情報を紐付けます。 - Groups Attribute:
memberOfやgroupsを指定して、社内での所属部門に応じて Cockpit 内での操作権限を自動的に割り当てるようにします。
- Username Attribute: