For the complete documentation index, see llms.txt. This page is also available as Markdown.

Teamsアプリ

Teams、Keeperボルト、エンドポイント特権マネージャーとの承認ワークフロー連携

Keeper Teamsアプリは、常時付与された特権を抑え、Teams上で認証情報のワークフロー申請と承認をスムーズに行うのに役立ちます。Teamsエージェントおよびコマンダーサービスモードのコンテナはお客様側のインフラ上でホストされ、エンドツーエンド暗号化によりゼロ知識が維持されます。

本ページでは、Keeperシークレットマネージャーを用いる簡易セットアップによるKeeper Teamsアプリの導入手順を取り扱います。KeeperシークレットマネージャーまたはKeeperPAMのライセンスをお持ちでない場合は、担当のKeeperアカウントマネージャーまでお問い合わせください。

機能

機能
説明

レコードアクセスの申請

理由、カスタム権限、アクセス時間の上限を指定したKeeperレコードへのアクセス申請。標準のボルトレコードおよびKeeperPAMリソースに対応

フォルダアクセスの申請

理由、カスタム権限、アクセス時間の上限を指定したKeeper共有フォルダへのアクセス申請

ワンタイム共有の申請

自己破棄型共有リンクによるワンタイム共有、パスワードリセット、その他の動的パスワード生成の申請。編集可能なワンタイム共有による双方向共有にも対応

エンドポイント特権マネージャーの承認

KEPM (Keeperエンドポイント特権マネージャー) のジャストインタイム昇格承認を、専用Teamsチャネルでリアルタイムに処理

SSOクラウドデバイスの承認

Keeperオートメーター未デプロイ時のSSOクラウドデバイス承認をTeamsから直接実行

セルフサービスでのシークレット作成

TeamsからKeeperボルトの共有フォルダへログインレコードを直接作成。サブフォルダ選択および自動生成パスワードに対応


要件

システム要件

ゼロ知識とエンドツーエンド暗号化を維持するため、Keeper Teamsアプリおよびコマンダーサービスモードのコンテナは、Microsoft Teamsクラウドと連携するために、お客様ごとのインフラ上でホストする必要があります。初期構成ではローカルでKeeperコマンダーを用います。

要件
詳細

Linux VM

クラウドまたはオンプレのVM。TeamsおよびKeeperの各サービスへhttps/443の外向き接続が可能

Docker

サービスセットアップにDockerを推奨

Keeperコマンダー

最新版のKeeperコマンダーのインストール

Keeperシークレットマネージャー

シークレット構成データの取得に、KeeperシークレットマネージャーまたはKeeperPAMライセンスのいずれかを使用

Microsoft Azureテナント

Azure ADでアプリを登録するための管理者アクセス

Microsoft Teams

カスタムアプリをインストールできる権限を持つTeamsワークスペース

lightbulb-exclamation-on

重要 teams-app-setup コマンドを実行するには、Keeperシークレットマネージャー (KSM) を有効にする必要があります。KSMが利用できない場合は、担当のアカウントマネージャーまでお問い合わせください。

セットアップ手順

以下の手順では、コマンダーおよびTeamsアプリ用のDockerイメージ (keeper/commanderおよびkeeper/teams-app)を使用します。本連携では、各サービスが用いる構成を保護するためにKeeperシークレットマネージャーも利用します。

Teamsアプリを構成するには、以下の8つの手順に従います。


手順1. Azure ADアプリの登録

このセクションでは、Teamsボットを認証するために、Microsoft 365テナントにAzure ADアプリを作成します。

  • Azure Portalに、全体管理者またはアプリケーション管理者としてサインインします。

  • [Azure Active Directory][アプリの登録] に移動します。

  • [新規登録][すべてのアプリケーション] をクリックします。

  • アプリを構成します。 - [名前]: keeper-security-teams - [サポートされているアカウントの種類]: 「この組織ディレクトリのみに含まれるアカウント」のみ - [リダイレクト URI]: 現時点では空のままにします。

  • [登録] をクリックします。

  • 作成後、[概要] ページから以下の値を控えます。

    • [アプリケーション (クライアント) ID]AZURE_CLIENT_ID として保存します。

    • [ディレクトリ (テナント) ID]AZURE_TENANT_ID として保存します。

  • [APIのアクセス許可] を構成します。

    • 管理 → [APIのアクセス許可][アクセス許可の追加] に移動します。

  • [Microsoft Graph][アプリケーションのアクセス許可] を選択します。

  • 以下のアクセス許可を追加します。

    • ChannelMessage.Read.All

    • User.Read.All

  • [MSFTに管理者の同意を与える] をクリックします。

  • [クライアント シークレット] を作成します。

  • [証明書とシークレット][クライアント シークレット] に移動します。

  • [新しいクライアント シークレット] をクリックします。

  • 説明: Keeper Teams App

  • 有効期限: 適切な期間を選択します (24か月を推奨)。

  • [追加] をクリックします。

  • [値はすぐにコピーし、] AZURE_CLIENT_SECRET として保存します。

アプリ作成後、以下の資格情報を収集します。

資格情報
場所

CLIENT_ID

アプリの登録 → 概要 → アプリケーション (クライアント) ID

TENANT_ID

アプリの登録 → 概要 → ディレクトリ (テナント) ID

署名シークレット

アプリの登録 → 証明書とシークレット → クライアント シークレット (値)

生成されたクライアントID、テナントID、および 署名シークレットの値手順4 用に保存しておきます。


手順2. Azureボットの登録の作成

  • Azure PortalでBot Servicesを検索し、[リソースの作成] をクリックします。

  • Bot Servicesを検索し、[作成] をクリックします。

  • ボットを構成します。

    • [ボット ハンドル]: keeper-security-bot (一意である必要があります)

    • [サブスクリプション]: 使用するサブスクリプションを選択します。

    • [リソース グループ]: 新規作成するか既存を使用します。

    • [価格レベル]: テストはFree (F0)、本番はStandard (S1) を選択します。

    • [アプリの種類]: シングルテナントを選択します。

    • [作成の種類]: 既存のアプリ登録を使用します。

    • [アプリID]: 手順1のアプリケーション (クライアント) IDとテナントIDを入力します。

  • [確認および作成][作成] をクリックします。

  • [MicrosoftアプリID] (手順1のアプリケーションIDと同じ) を控え、BOT_ID として保存します。


手順3. 承認用チャネルの作成

  • Microsoft Teamsで新しいプライベート チャネルを作成します (例: #keeper-vault-approvers)。

    • チームを右クリックし、[チャネルの追加] をクリックします。

    • [チャネル名]: keeper-vault-approvers

    • [プライバシー]: プライベート。特定のチーム メンバーのみがアクセス可能です

    • [作成] をクリックします。

  • チームIDチャネルID を取得します。

    • ウェブブラウザでTeamsを開きます。

    • 承認用チャネルに移動します。

    • チャネル名をクリックすると、以下のようなポップアップが開きます。

  • リンクをコピーし、新しいタブで開きます。

  • URLは以下のような形式になります。https://teams.microsoft.com/l/channel/19%3A...@thread.tacv2/...?groupId=<TEAM_ID>&tenantId=...

  • groupIdチームID として取り出します。

  • チャネルID: /channel/ とチャネル名のあいだの値をURLデコードします。 %3A: に、%40@ に置き換えます。 例 (デコード前): 19%3AXSD5456476qe-a915_bN8WU7qScl7687678nj1Ya0e0RM1%40thread.tacv2 例 (デコード後): 19:XSD5456476qe-a915_bN8WU7qScl7687678nj1Ya0e0RM1@thread.tacv2

チャネルIDとチームID手順5用に保存しておきます。

手順4. コマンダーサービスモードのセットアップ

サービスがKeeperテナント内で認証しコマンドを実行できるようにするには、承認済みの Keeperコマンダー構成ファイル を作成する必要があります。この構成はホストPCまたはワークステーションで生成できます。

  • マシンにローカルでKeeperコマンダーをインストールします。

  • 必要に応じて本連携専用のKeeperサービス アカウントを新規作成し、関連レコードとフォルダへのアクセス、およびレコードとフォルダの共有ができるようにします。

  • Keeperサービスアカウントでコマンダーにログインします。(serviceuser@company.com)

  • 2FAを含む認証を完了します。認証が完了したら 手順5 に進みます。


手順5. Teamsアプリのセットアップコマンドの実行

teams-app-setup コマンドは docker-compose.yml を生成し、Teamsアプリおよびコマンダーサービスモードの各サービスを運用するために使用します。

コマンダーシェルで以下を入力します。

コマンドライン オプション

teams-app-setup コマンドは、カスタマイズ用に以下の任意フラグに対応します。

パラメータ
説明
既定値

--folder-name (optional)

共有フォルダの名前

Commander Service Mode - Teams App

--app-name (optional)

シークレットマネージャー アプリの名前

Commander Service Mode - KSM App

--config-record-name (optional)

コマンダー構成レコードの名前

Commander Service Mode Docker Config

--teams-record-name (optional)

Teams構成レコードの名前

Commander Service Mode Teams App Config

--config-path (optional)

config.jsonファイルのパス

~/.keeper/config.json

--timeout (optional)

デバイスのタイムアウト設定

30d

--skip-device-setup (optional)

既に構成済みの場合はデバイス登録をスキップする

false

カスタム名の例は以下のとおりです。

コマンドは以下のプロンプトに沿って進みます。

フェーズ1: Dockerサービスモードのセットアップ

KSMを自動構成し、Docker経由でサービスモードをセットアップするために必要な構成ファイルをアップロードします。

サービス構成

コマンダーサービスのポートを設定します。

プロンプト
説明

Port

コマンダーサービスモードのポート番号 (1024–65535)

8900

フェーズ2: Teamsアプリ連携のセットアップ

手順1および2で取得したTeamsの資格情報を入力します。

プロンプト
説明

Teams Client ID (required)

Azureアプリ登録のアプリケーション (クライアント) ID

2efdee8-6a0a-0...

Client Secret (required)

Azureアプリ登録のシークレット値

f16241e1-b52a-24...

Tenant ID (required)

Azure ADのディレクトリ (テナント) ID

a1b2c3d4e5f6...

Teams Approvals Channel ID (required)

手順3のチャネルID (必須)

19:OfBgL.....x41@thread.tdf..

Approvals Team ID (required)

手順3のチームID (必須)

9336604b-038e-4...

Teams bot port

Teamsボットが受信リクエストを待ち受けるポート

例: 3978

Enable PEDM? (optional)

エンドポイント特権マネージャーの承認を有効にする (y/n)

y

PEDM Polling Interval (optional)

PEDMリクエストを確認する間隔 (秒)。既定: 120

120

Enable Device Approvals?(optional)

SSOクラウドデバイス承認を有効にする (y/n)

y

Device Approval Polling Interval (optional)

デバイス承認を確認する間隔 (秒)。既定: 120

120

エンドポイント特権マネージャーの承認およびSSOクラウドの承認を処理するには、Teamsアプリのサービス ユーザーに、管理者権限として [エンドポイント特権の管理] および [Keeper管理コンソールの管理] が付与されている必要があります。

コマンドが正常に完了すると、以下が自動的に実行されます。

  • デバイスの永続認証を構成します。

  • 「Commander Service Mode – Teams App」 という名前の共有フォルダを作成します。

  • 共有フォルダにアクセスできるKSMアプリケーションを作成します。

  • クライアントデバイスを作成し、Base64エンコードされた構成値を生成します。

  • Docker構成レコードを作成し、.keeper ディレクトリの config.json をアップロードします。

  • Teamsアプリの資格情報を含むTeamsアプリ構成レコードを作成します。

  • 正常終了すると、コマンダーサービスモードとTeamsアプリの両サービスを含む docker-compose.yml が生成され、デプロイ可能な状態になります。

セットアップ完了後、デバイストークンの競合を防ぐため、コマンダーセッションを終了し、ローカルの .keeper/config.json を削除します。


手順6. Docker環境へのデプロイ

このセクションでは、コマンダーサービスを実行するLinux仮想マシンまたはホスト上にDocker Compose環境を用意します。

  • Linux VMを起動するかLinuxホストを用意し、SSHで接続します。

  • docker および docker-compose をインストールします (手順についてはこちらをご参照ください)。

  • 生成した docker-compose.yml を手順5の成果物として対象のLinuxサーバーに転送します。

ホスト上でサービスを起動します。

サービス起動の順序

サービスは以下の順で起動します。

  1. コマンダーサービスが先に起動し、APIキーを生成してサービスURLとともにボルトのレコードに保存します。

  2. ヘルスチェックでコマンダーサービスが稼働していることを検証します。

  3. ヘルスチェック通過後にTeamsアプリが起動し、ボルトのレコードからAPIキーとサービスURLを自動取得します。

起動の確認

ログを監視し、すべてが起動したことを確認します。

  • コンテナの状態を確認します。

  • コマンダーサービスのログを表示します。

セキュリティのため、DockerログではAPIキーはマスクされます。両サービスは共有のボルトレコード経由で安全に通信します。

  • Teamsアプリのログを表示します。

成功していれば、以下のようなメッセージが表示されます。


手順7. メッセージングエンドポイントの構成

ボットをデプロイして稼働させたら、Microsoft Teamsがボットと通信できるようメッセージングエンドポイントを構成します。

  1. Linux VMにngrokをインストールし、認証します。

認証トークンはngrokダッシュボードから取得します。ダッシュボードの [Domains] で静的ドメインを予約します。

  1. ngrokを起動します。

  1. Azureでメッセージングエンドポイントを設定します。

    1. Azure Portalに移動し、[Azureボット] リソースを開きます。

    2. [設定][構成] に移動します。

    3. [メッセージング エンドポイント]https://<YOUR_STATIC_DOMAIN>/api/messages を設定します。

    4. [適用] をクリックします。

  2. 動作確認

手順8. Teamsアプリパッケージのアップロード

このセクションでは、Dockerサービスが稼働したら、TeamsアプリパッケージをMicrosoft Teams環境にアップロードします。

  • リリースページからアプリパッケージのテンプレートをダウンロードします。

  • ZIPを展開すると、以下が含まれます。

  • manifest.json を編集し、プレースホルダーを置き換えます。

    • ${{TEAMS_APP_ID}}AzureクライアントID (手順1) に置き換えます。

    例は以下のとおりです。

  • ${{BOT_ID}}ボットID (AzureクライアントIDと同じ) に置き換えます。

例は以下のとおりです。

  • ファイルをZIPに再パッケージします。

  • Teams管理センターにアップロードします。

    • Microsoft Teams管理センターにサインインします。

    • [Teamsアプリ][アプリの管理] に移動します。

    • [アプリをアップロードする] をクリックし、組織のアプリカタログへのアプリのアップロードを選択します。

    • keeper-teams-app.zip を選択します。

    • [アップロード] をクリックします。

lightbulb-exclamation-on

トラブルシューティング アップロードが [「問題が発生しました」] で失敗する場合は、ターミナルからTeamsチャネルを直接有効にしてから、ZIPを再度アップロードできます。

<RESOURCE_GROUP> をAzureのリソース グループ名に、<BOT_NAME> をAzureボット リソース名に置き換えます。

  • ZIPをアップロードしたら、チームにアプリをインストールします。

    • Microsoft Teamsでチームに移動します。

    • チーム名の横の [...][チームの管理] をクリックします。

    • [アプリ] タブを開きます。

    • [その他のアプリ] (右下) をクリックします。

    • Keeper Securityを検索し、[承認者のチームまたはチャネル] で開きます。

    チーム単位でアプリをインストールしたら、承認用チャネルでボットを初期化し、そこへ承認リクエストをルーティングできるようにします。

    • 自動的にチャネルへリダイレクトされるか、keeper-vault-approvers プライベートチャネルに移動します。

    • 以下のコマンドでボット名にメンションします。@keeper Security /channel-status

以上で、エンドユーザーはリクエストの起票を開始できます。


申請ユーザー向けコマンドリファレンス

lightbulb-exclamation-on

重要

Slackでは任意のチャネルやDMから申請できますが、Keeper SecurityのTeamsボットは、ボットとの1対1の個人チャットでのみリクエスト系コマンドを受け付けます。チーム チャネル、グループ チャット、他ユーザーとのDMに送ったコマンドは処理されません。

ボットとの会話を始める手順は以下のとおりです。

  1. Teamsの検索バーでKeeper Securityを検索します。

  2. 結果からボットを選択します。

  3. 個人チャットでコマンドを送信します (例: keeper-request-record "record" "justification")。

keeper-request-record

特定のKeeperレコードへのアクセスを申請します。

構文は以下のとおりです。

keeper-request-folder

共有フォルダへのアクセスを申請します。

構文は以下のとおりです。

keeper-one-time-share

レコードのワンタイム共有リンクを申請します。

構文は以下のとおりです。

keeper-create-secret

アクセス権のある共有フォルダ内に、ログインレコードを直接作成できます。サブフォルダの指定も可能です。

構文は以下のとおりです。

タイトルは必須です。メモは任意です。


スクリーンショット

以下のスクリーンショットは、Keeper Teamsアプリの主な機能を示します。

申請のためのTeamsアプリ ボットとのやり取り (申請ユーザー視点)


レコードへのアクセス申請 (UIDなし)


レコードへのアクセス申請 (UID指定あり) (管理者視点)


レコードアクセス申請 (管理者視点)


フォルダへのアクセス申請 (承認後) (管理者視点)


フォルダアクセス申請 (UIDあり) (管理者視点)


ワンタイム共有申請 (管理者視点)


ワンタイム共有 (新規レコード作成) (管理者視点)


ワンタイム共有 (承認後) (申請ユーザー視点)


エンドポイント特権マネージャー (昇格の承認)


SSOクラウドデバイス承認 (管理者視点)


新しいシークレットの作成 (申請ユーザー視点)

[パスワードを自動生成] にチェックを入れている場合、パスワード欄への入力は無視されます。生成されたパスワードはKeeperボルトに安全に保存されます。


アップデート

コマンダーサービスモードおよびTeamsアプリ コンテナの更新

コマンダーまたはTeamsアプリを最新版に更新するには、サービスを停止し、コンテナを更新してから新しいコンテナを起動します。


トラブルシューティング

起動時のエラー

エラー
原因
対処

コマンダーサービスモードがマスター パスワードを求める

ボルトのレコードに複数のconfig.jsonが添付されている

手順4〜5に従い、新しいフォルダ名で teams-app-setup を再実行し、新しいJSON構成ファイルを作成します

[WARN] Warning: Cannot reach Keeper Service Mode

サービスモードが未起動、またはURLが誤っている

ボルトのレコードの service URL が想定どおりか確認します

BotFrameworkAdapter initialization failed

ボットの資格情報が無効

MICROSOFT_APP_IDMICROSOFT_APP_PASSWORD を確認します

Azure AD authentication error

テナントまたはクライアントの資格情報が無効

AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET を確認します


Teams APIのエラー

エラー
原因
対処

Conversation not found

チームまたはチャネルIDが無効

TEAMS_TEAM_IDTEAMS_CHANNEL_ID を確認します

Authorization denied (401)

ボットの構成不備またはトークン期限切れ

クライアント シークレットを再生成し、構成を更新します

Forbidden (403)

APIのアクセス許可不足

Graph APIのアクセス許可に管理者同意が付与されているか確認します

Channel not found

ボットがチャネルに未追加

承認用チャネルにボットを追加します

Activity not found

メッセージが削除された、またはアクティビティIDが無効

古いカード更新時に発生することがあります。無視してかまいません


サービスモードのエラー

エラー
原因
対処

Failed to submit command: HTTP 403

APIキーが無効または欠落

構成用ボルト レコードのapi_keyがサービスモードと一致するか確認します

Failed to submit command: HTTP 404

APIエンドポイントのバージョンが誤り

V2エンドポイント /api/v2/ を使用します (/api/v1/ ではありません)

Failed to submit command: HTTP 405

HTTPメソッドが誤り

サービスモードがキュー有効で稼働しているか確認します

Command timed out or failed

サービスモードの過負荷またはコマンド未登録

サービスモードにコマンドを登録します。タイムアウトを延長します

No request_id received from API

サービスモードがキュー/非同期モードでない

キュー有効 (V2) でサービスモードを再起動します


アクセス付与のエラー

エラー
原因
対処

Record Not Found

UIDが無効、またはレコードが削除済み

レコードUIDがKeeperボルトに存在するか確認します

Folder Not Found

フォルダUIDが無効

フォルダUIDがKeeperボルトに存在するか確認します

Invalid UID Type (record vs folder)

種類に合わないコマンドを使用

フォルダは /keeper-request-folder、レコードは /keeper-request-record を使用します

This user already has time-limited access...

既存の共有と競合

既存のアクセスを取り消してから、新しい権限を付与します

Share permissions require permanent access

共有系権限に期限を付けようとしている

共有権限 ([Can Share][Edit & Share][Change Owner]) は常に永続

User share...failed

フォルダ上の権限の競合

既存アクセスと両立しない場合があります。取り消してから再付与します


検索およびモーダルのエラー

エラー
原因
対処

No records found matching...

検索が細かすぎる、または該当なし

検索語を広げます。ボルトにレコードが存在するか確認します

Search command timed out

サービスモードが遅い、またはボルトが非常に大きい

_poll_for_result() の max_wait を増やすか、検索をより具体的にします

Error processing search modal submission

モーダル データが破損または期限切れ

モーダルを閉じて再試行します。ログで個別のエラーを確認します

Modal shows "Searching..." forever

ポーリング結果が返らない

サービスモードのログを確認します。searchコマンドが登録されているか確認します


ワンタイム共有のエラー

エラー
原因
対処

one-time share links can not be created for PAM records

コマンダーが未対応

PAM以外のレコードで申請します

Share link created but URL not found in response

サービスモードの応答形式が想定外

サービスモードのバージョンを確認します。one-time-shareコマンドが登録されているか確認します

Failed to create one-time share

レコードが共有可能でない可能性

ユーザーにレコードの共有権限があるか確認します


レコード作成のエラー

エラー
原因
対処

Failed to create record

必須フィールド不足またはコマンド エラー

タイトル、ログイン、パスワードが入力されているか確認します

Record created but UID could not be retrieved

作成後の検索に失敗

レコードは存在するが検索がタイムアウトした可能性があります。手動で検索します

Unable to load shared folder list

share-reportコマンドの失敗、または未登録

service-createコマンドに share-report が登録されているか確認します。Retryボタンをクリックします

No subfolders found under this folder

選択した共有フォルダにサブフォルダがない

通知メッセージです。レコードは選択した共有フォルダに作成されます

Shared folder selection is required

フォルダを選ばずにシークレットの作成を実行した

送信する前に、ドロップダウンから共有フォルダを選択します


KEPMのエラー

エラー
原因
対処

No data returned

KEPMが有効でない

Keeperエンタープライズ設定でKEPMを有効にします。サービスユーザーに必要な管理者権限があるか確認します

KEPM sync failed

サービスモードからKEPMサーバーに到達できない

ネットワーク接続とKEPMの構成を確認します

Failed to approve/deny KEPM request

リクエストの期限切れの可能性

リクエストが未処理か確認します。自動期限切れしている場合があります

参考

最終更新