Slack App

Keeperボルトおよびエンドポイント特権マネージャーと連携するSlack承認ワークフロー

circle-info

本連携機能は現在パブリックプレビューとして公開されています。ご意見や機能要望がございましたら、お手数ですがIssueを作成arrow-up-rightのうえお知らせください。

概要

Keeper Slackアプリは、ゼロスタンディング特権の実現を支援し、認証情報に関するワークフローの申請および承認をSlack上で直接行えるようにします。Slackエージェントおよびコマンダーサービスモードはお客様環境でホストされ、エンドツーエンド暗号化によりゼロ知識が維持されます。

本ドキュメントでは、Keeperシークレットマネージャーを使用した簡易セットアップ方式によるKeeper Slackアプリのインストール方法を取り扱います。KeeperシークレットマネージャーまたはKeeperPAMのライセンスをお持ちでない場合は、担当のKeeperアカウントマネージャーまでお問い合わせください。

Keeper Security Slack Appの概要 (英語)

機能

機能
説明

レコードアクセス申請

Keeper内の特定のレコードに対して、理由、カスタム権限、アクセス期限を指定してアクセスを申請できます。標準のボルトレコードおよびKeeperPAMリソースが対象です。

フォルダアクセス申請

特定のKeeper共有フォルダに対して、理由、カスタム権限、アクセス期限を指定してアクセスを申請できます。

ワンタイム共有申請

ワンタイム共有、パスワードリセット、または動的パスワード生成を、自己消滅型の共有リンクで申請できます。ワンタイム共有は編集可能に設定でき、双方向の共有にも対応します。

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

Keeperエンドポイント特権マネージャー (KEPM) によるジャストインタイム昇格承認を、専用のSlackチャネルからリアルタイムで実行できます。

SSOクラウドデバイス承認

Keeperオートメーターサービスを導入していない場合でも、Slack上からSSOクラウドデバイスの承認を実行できます。

要件

システム要件

ゼロ知識および完全なエンドツーエンド暗号化を維持するため、Keeper Slackアプリおよびコマンダーサービスモードのコンテナは、各お客様のインフラストラクチャ上でホストされ、Slackのクラウドサービスと連携します。セットアップ作業には、ローカル環境でコマンダーを使用します。

要件
詳細

Linux VM

クラウドまたはオンプレミス上の任意の仮想マシン。SlackおよびKeeperサービスに対してhttps/443のアウトバウンド接続が可能であること。

Docker

サービス構築にはDockerの使用を推奨。

Keeperコマンダー

サービスモードが実行中で、アクセス可能であること。

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

シークレット設定データの取得に、KeeperシークレットマネージャーまたはKeeperPAMライセンスが必要。

Slackワークスペース

アプリのインストールおよび設定を行うための管理者権限が必要。

circle-info

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

セットアップ手順

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

Slackアプリの設定は、次の5つの手順で行います。

  1. Slackアプリの作成

  2. 承認用チャネルの作成

  3. コマンダーサービスモードの設定

  4. Slackアプリ設定コマンドの実行

  5. Docker環境へのデプロイ


1. Slackアプリの作成

このセクションでは、Slackワークスペースの管理者としてSlackアプリを作成し、必要な設定値を取得します。

  • Slack管理者として api.slack.com/apps にアクセスします。

  • [Create New App] (アプリを新規作成) → [From a manifest] (マニフェストから) をクリックします。

  • 対象のワークスペースを選択します。

  • 以下のJSONコンテンツをマニフェストに貼り付けます。

  • Slackアプリの設定内容を確認し、アプリを作成します。

  • [Basic Information] (基本情報) → [Display Information] (表示情報) に移動し、アプリのプロフィール画像としてKeeperのアイコンをアップロードします。以下に、使用可能な512×512サイズのKeeperアイコンを掲載しています。ダウンロードしてご利用ください。

file-image
24KB
arrow-up-right-from-square開く

画面左側のメニューで、[Basic Information] (基本情報) → [App-Level Tokens] (アプリレベルトークン) → [Generate Token and Scopes] (トークンとスコープを生成) をクリックします。「keeper-slack-app」という名前でアプリレベルトークンを作成し、スコープに connections:write を指定します。生成したトークンは、次の手順で「App Token」として使用するため保存してください。

  • 画面左側のメニューで、[Install App] (アプリをインストール) をクリックします。[Install to Workspace] (ワークスペースにインストール) をクリックし、表示される確認画面でインストールを実行します。その後、次の手順で使用するためにBot User OAuthトークンを保存します。

アプリを作成後、以下の認証情報を取得します。

以下は表形式です。

認証情報
取得場所

App Token

[Basic Information] (基本情報) → [App-Level Tokens] (アプリレベルトークン) → [Generate] (生成)

Bot Token

[OAuth & Permissions] (OAuthと権限) → [Bot User OAuth Token] (BotユーザーOAuthトークン)

Signing Secret

[Basic Information] (基本情報) → [App Credentials] (アプリ認証情報)

circle-info

生成したApp TokenBot Token、およびSigning Secretは、手順4で使用するため保存してください。

2. 承認用チャネルの作成

  • Slackワークスペース内で、プライベートチャネル (例: #keeper-vault-approvers) を作成します。

  • 作成した承認用チャネルにKeeperボットを招待します。

    • 方法1 承認用チャネル内で、次のコマンドを入力します。 /invite @Keeper Security

    • 方法2 チャネル名をクリック → [Settings] (設定) → [Integrations] (インテグレーション) → [Add an App] (アプリを追加) → 「Keeper Security」を検索 → [Add] (追加)

  • 最後に、チャネルIDをコピーします。

    • チャネルを右クリック → [View channel details] (チャネルの詳細を表示) → 画面下部のIDをコピーします。

circle-info

手順4で使用するためにチャネルIDを保存しておきます。


3. コマンダーサービスモードの設定

Keeperテナント内でサービスが認証およびコマンド実行を行えるようにするには、Keeperコマンダーの構成ファイルを作成し、あらかじめ認可しておく必要があります。この構成は、ホストコンピューターまたはワークステーション上で生成できます。

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

  • 必要に応じて、本連携専用のKeeperサービスアカウントを新規作成します。対象となるレコードおよびフォルダへのアクセス権と、レコードおよびフォルダの共有を実行できる権限を付与してください。

  • Keeperサービスアカウント (例: [email protected]) でコマンダーにログインします。

  • 2要素認証を含む認証プロセスを完了します。完全に認証が完了したら、手順4へ進みます。


4. Slackアプリ設定コマンドの実行

slack-app-setup コマンドを実行すると、Slackアプリおよびコマンダーサービスモードを運用するための docker-compose.yml ファイルが生成されます。

コマンダーのシェルから、次のコマンドを入力します。

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

slack-app-setup コマンドでは、カスタマイズのために以下のオプションフラグを使用できます。

パラメータ
説明
既定値

--folder-name (任意)

共有フォルダの名称

Commander Service Mode - Slack App

--app-name (任意)

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

Commander Service Mode - KSM App

--config-record-name (任意)

コマンダー設定レコードの名称

Commander Service Mode Docker Config

--slack-record-name (任意)

Slack設定レコードの名称

Commander Service Mode Slack App Config

--config-path (任意)

config.jsonファイルのパス

~/.keeper/config.json

--timeout (任意)

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

30d

--skip-device-setup (任意)

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

false

カスタム名称を指定した例

コマンドを実行すると、次のプロンプトに従って設定を進めます。

1. Dockerサービスモードの設定

Keeperシークレットマネージャー (KSM) の構成が自動的に行われ、Docker経由でサービスモードを設定するために必要な構成ファイルがアップロードされます。

サービス設定

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

項目
説明

Port

コマンダーサービスモードで使用するポート番号 (1024~65535)

8900

トンネリング設定 (任意)

外部アクセスが必要な場合は、以下のいずれかを設定します。

項目
説明

Ngrok Auth Token

公開URLを生成するためのngrok認証トークン

Ngrok Custom Domain

カスタムngrokドメイン (例: myapp.ngrok.io)

Cloudflare Tunnel Token

公開URLを生成するためのCloudflareトンネルトークン

Cloudflare Custom Domain

Cloudflareで設定したカスタムドメイン (例: slack.company.com)

circle-exclamation

2. Slackアプリ連携の設定

手順1および手順2で取得したSlackの認証情報を入力します。

項目
説明

Slack App Token (必須)

手順1で取得した xapp- で始まるトークン。90文字以上である必要があります。

xapp-1-A0XXXXX-...

Slack Bot Token (必須)

手順1で取得した xoxb- で始まるトークン。50文字以上である必要があります。

xoxb-1234567890-...

Slack Signing Secret (必須)

手順1で取得したSigning Secret。32文字である必要があります。

a1b2c3d4e5f6...

Approvals Channel ID (必須)

手順2で取得したチャネルID。

C0XXXXXXX

Enable PEDM? (任意)

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

y

PEDM Polling Interval (任意)

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

120

Enable Device Approvals? (任意)

SSO Cloudデバイス承認を有効化するかどうか (y/n)

y

Device Approval Polling Interval (任意)

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

120

circle-info

エンドポイント特権マネージャー承認およびSSO Cloud承認を処理するには、Slackアプリのサービスユーザーに「Manage Endpoint Privilege」(エンドポイント特権の管理) および「Manage the Keeper Admin Console」(Keeper管理コンソールの管理) の管理者権限が付与されている必要があります。

コマンドが正常に実行されると、次の処理が自動的に行われます。

  • 永続的なデバイス認証の設定

  • 「Commander Service Mode – Slack App」という名称の共有フォルダの作成

  • 共有フォルダにアクセス可能なKSMアプリケーションの作成

  • クライアントデバイスの作成およびBase64エンコードされた設定値の生成

  • .keeper ディレクトリ内の config.json ファイルをアップロードし、Docker設定レコードを作成

  • Slackアプリの認証情報を含むSlack App設定レコードの作成

  • 正常に実行されると、コマンダーサービスモードおよびSlackアプリの両サービスを含む docker-compose.yml ファイルが生成され、デプロイ可能な状態となります。

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


5. Docker環境へのデプロイ

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

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

  • Dockerおよびdocker-composeをインストールします(インストール手順をご参照ください)。

  • 手順4で生成した docker-compose.yml ファイルを、対象のLinuxサーバーへ転送します。

ホストマシン上で、次のコマンドを実行してサービスを起動します。

サービス起動の流れ

サービスは順番に起動します。

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

  2. ヘルスチェックにより、コマンダーサービスが正常に稼働していることを確認します。

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

起動の確認

正常に起動していることを確認するため、ログを監視します。

コンテナの状態確認

コマンダーサービスのログ確認

circle-info

セキュリティ上の理由により、DockerログではAPIキーはマスク表示されます。両サービスは共有ボルトレコードを介して安全に通信します。

Slackアプリのログ確認

正常に起動している場合は、次のようなメッセージが表示されます。


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

/keeper-request-record

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

構文

/keeper-request-folder

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

構文

/keeper-one-time-share

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

構文

スクリーンショット

以下のスクリーンショットでは、Keeper Slackアプリの主要機能を紹介しています。

Slackアプリを使用したリクエスト操作

レコードへのアクセス申請 (UID未指定)

レコードへのアクセス申請 (UID指定あり)

レコードアクセス申請 - 管理者ビュー

フォルダへのアクセス申請 (UID指定あり)

フォルダアクセス申請 - 管理者ビュー

ワンタイム共有申請 - パスワードリセット用

ワンタイム共有 - 新規レコード作成付き管理者ビュー

ワンタイム共有 - 既存レコード検索付き管理者ビュー

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

SSOクラウドデバイス承認 - 管理者ビュー

アップデート

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

コマンダーまたはSlackアプリを最新バージョンへ更新するには、以下の手順でサービスを停止し、コンテナを更新したうえで再起動します。

トラブルシューティング

起動エラー

エラー
原因
対処方法

コマンダーサービスモードがマスターパスワードを要求している

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

手順4–5で slack-app-setup を新しいフォルダ名で再実行し、新しい JSON 構成ファイルを作成する

[WARN] Warning: Cannot reach Keeper Service Mode

サービスモードが稼働していない、またはサービスURLが誤っている

ボルトレコード内のサービスURLが正しいか確認する(サービスが起動しているかも確認)

invalid_auth

Slack Bot Token が誤っている

bot_tokenxoxb- で始まっていることを確認する(xapp-xoxp- ではない)

Socket Mode が有効化されていない / アプリレベルトークンが存在しないまたは誤っている

Socket Mode 未有効、または App-Level Token が未設定・誤設定

Socket Mode を有効にし、connections:write スコープで App-Level Token(アプリレベルトークン)を生成する

Slack APIエラー

エラー
原因
対処方法

channel_not_found

ボットが承認用チャネルに招待されていない

該当チャネルで /invite @Keeper Commander を実行する

not_in_channel

ボットがチャネルから削除されている

ボットをチャネルに再招待する

missing_scope

ボットに必要な権限が付与されていない

アプリを再インストールし、chat:writecommandsim:writeusers:readchannels:read の各スコープが設定されていることを確認する

invalid_blocks

Block Kit メッセージの形式が不正

ログで該当するブロックエラーを確認する (多くの場合、データ形式の不備)

user_not_found

Slackユーザー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メソッドを使用している

正しいHTTPメソッドを使用しているか確認する。コマンダーサービスモードがキュー(queue)を有効にして実行されていることを確認する

Command timed out or failed

サービスモードが過負荷、またはコマンドが登録されていない

サービスモードの負荷を軽減する/タイムアウトを延長する。コマンドがサービスモードに登録されているか確認する

No request_id received from API

サービスモードがキュー/非同期モードを使用していない

サービスモードをキュー(queue)有効のV2モードで再起動する(queue/asyncモードを有効にする)

アクセス付与エラー

エラー
原因
対処方法

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 など)を併用している

共有権限(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

結果取得処理が完了していない

サービスモードのログを確認し、検索コマンドが正しく登録されているか確認する

ワンタイム共有エラー

エラー
原因
対処方法

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

コマンダーがPAMレコードのワンタイム共有に対応していない

PAM以外のレコードに対して申請する

Share link created but URL not found in response

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

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

Failed to create one-time share

レコードが共有可能な状態ではない

対象レコードに対してユーザーが共有権限を持っていることを確認する

レコード作成エラー

エラー
原因
対処方法

Failed to create record

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

title、login、password が指定されていることを確認する

Record created but UID could not be retrieved

作成後の検索に失敗している

レコードは作成済みだが検索がタイムアウトしている可能性がある。ボルト内で手動検索する

KEPMエラー

エラー
原因
対処方法

No data returned

KEPM機能が有効になっていない

Keeperエンタープライズ設定でKEPMを有効化する。サービスユーザーに必要な管理者権限が付与されていることを確認する

KEPM sync failed

サービスモードがKEPMサーバーに接続できない

ネットワーク接続およびKEPMの設定を確認する

Failed to approve/deny KEPM request

リクエストの有効期限が切れている可能性がある

リクエストがまだ保留中か確認する。自動的に期限切れになっている場合がある

参考

最終更新

役に立ちましたか?