Oktaユーザー

Okta APIを使用したOktaユーザーアカウントのローテーション

概要

本ページでは、「NOOPモード」を使用してOktaとKeeper PAMゲートウェイでパスワードローテーションを設定する方法を解説します。Keeperのレコードに設定されたフラグで、ゲートウェイにプライマリローテーション方法をスキップしてポストローテーションスクリプトを直接実行するように指示します。

本ページの最後にPythonスクリプトの例を含めました。

要件

  1. KSMアプリケーション: シークレットマネージャー (KSM) アプリケーションがセットアップされていることを確かにします。

  2. 共有フォルダ: 共有フォルダが設定されていて、そこにすべてのレコードが保存されている必要があります。

  3. PAM設定: PAMがセットアップされていること、およびゲートウェイが実行中であり、この設定に接続されていることを確かにします。

  4. Okta APIトークン: Okta APIとのやりとりにOkta APIトークンが必要となります。

1. Okta APIトークンを取得

  1. Oktaの公式ドキュメントの手順に従ってAPIトークンを生成します。

  2. この API トークンをKeeperのレコードに保存します。レコードタイプは任意のタイプを選択できますが、この例では「ログイン」タイプを使用します。

    • APIトークンを「パスワード」フィールドに保存します。

    • 組織のURL をウェブサイトのアドレス」フィールドに保存します。

  3. このレコードに「Okta API Access Details」という名前を付けます。この名前は、後でスクリプトでレコードを取得するために使用されます。

Okta API詳細レコード

2. ローテーションレコードを設定

新しいPAMユーザーレコードを作成して、パスワードをローテーションする対象Oktaユーザーの詳細を保存します。

  • Oktaユーザーのメールアドレスと一致するようにユーザー名を設定します。

  • パスワードをユーザーに設定されている現在のパスワードに設定します。

Okta SDKでは、現在のパスワードが有効な場合にのみパスワードのローテーションを行います。パスワードが間違っている場合、ローテーションは失敗します。

3. PAMスクリプトを追加

  1. パスワードのローテーションを実行する下のPythonスクリプトを添付します。スクリプトの各行にはコメントが含まれています。

  2. 「ローテーションクレデンシャル」のレコード (手順 1で作成したOkta APIトークンと組織URLを含むレコード) を追加します。

  3. ノーオペレーション (NOOP) アトミック実行を有効にします。

    • ユーザーの詳細が保存されている現在のPAMユーザーレコードに、NOOPというラベルの新しいカスタムフィールドを作成し、その値をTrueに設定します。

4. パスワードローテーションを設定

  1. ローテーションタイプ: この例では「オンデマンド」に設定します。

  2. パスワードの複雑さ: 特別な要件がない限り、デフォルトのままにしておきます。

  3. ローテーション設定: 前に設定した PAM設定にします。

  4. 管理資格情報レコード: 空のままにしておく必要があります。

以下は、完全に情報が記入されたOktaローテーションレコードのスクリーンショットです。

Oktaローテーションレコード

5. Python環境の設定

以下は、Keeper Gatewayが実行されている環境での手順となります。

  1. Python環境に必要な依存関係を満たすようすべてインストールされていることを確認します。

  2. 仮想環境を使用する場合は、スクリプトの先頭にシバン行を追加します。

シバン行にスペースが含まれていないようにしてください。スペースが存在する場合は、スペースを含まないシンボリックリンクを作成してください。

以下は、Linuxでシンボリックリンクを作成する例となります。 sudo ln -s "/Users/john/PAM Rotation Example/.venv/bin/python3" /usr/local/bin/pam_rotation_venv_python3

Pythonスクリプト

以下のPythonスクリプトには、詳細なコメントを付けています。必要なモジュールをインポートし、変数を初期化し、タイトルによるパスワードの検索、すべてのOktaユーザーの取得、特定のユーザーのパスワードのローテーションなど、さまざまなタスクの関数を定義します。

Bashスクリプトバージョン

以下のBashスクリプトにはコメントが含まれており、ベストプラクティスに従っています。変数の初期化や、特定のタスクを実行する関数の定義が含まれています。例として、タイトルでパスワードを検索する機能や、特定のユーザーに対してパスワードをローテーションする機能が実装されています。

最終更新