Skip to content

シングルサインオン (SSO) と Windows 認証

シングルサインオン(SSO)を利用すると、Okta や Microsoft Azure など、社内ですでに使用している既存のアカウントで Cockpit にログインできるようになります。また、会社支給の Windows パソコンを使用している場合は、パスワードを入力せずに自動的にログインすることも可能です。


SSO とは? 🎟️

💡 たとえ話:テーマパークの共通リストバンド

多くのアトラクションがある巨大なテーマパークへ遊びに行くところをイメージしてください:

  • SSO がない場合: アトラクションに乗るたびに、お財布を取り出して別々のチケットを現金で買う必要があります(Cockpit、社内メール、経理システムなどのたびに毎回パスワードを入力する状態)。
  • SSO がある場合: パークの入り口で共通リストバンドをひとつ購入します。乗り物に乗るときは、スタッフがリストバンドをピッ!とスキャンするだけで入場できます。

SAML や OIDC は、このリストバンドの技術規格(バーコード式か、RFIDチップ式かなど)の名称です。

サポートされている SSO プロトコル:

  1. SAML 2.0: Cockpit を Okta、Keycloak、Ping Identity、または Azure AD などの社内認証サービスと連携させます。
  2. OpenID Connect (OIDC): Google Workspace や Microsoft Entra ID を使用してスムーズにログインできる軽量な仕組み。
  3. 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 サーバーの設定

  1. 生成された cockpit.keytab ファイルを Cockpit サーバーの /etc/cockpit/cockpit.keytab にコピーします。
  2. /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 を使用してログインできるように設定する手順は以下の通りです:

  1. 管理者として Cockpit にログインします。
  2. Settings > Identity Management > SAML を開きます。
  3. Metadata Import をクリックし、OktaやAzureからダウンロードしたメタデータ XML ファイルをアップロードします。
  4. 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 (認証成功後にユーザーが戻る先のアドレス)
  5. ユーザープロファイルの紐付けを設定します:
    • Username Attribute: NameIDuid など、ログイン名として使用するメールアドレス情報を紐付けます。
    • Groups Attribute: memberOfgroups を指定して、社内での所属部門に応じて Cockpit 内での操作権限を自動的に割り当てるようにします。