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

本連携機能は現在パブリックプレビューとして公開されています。ご意見や機能要望がございましたら、お手数ですがIssueを作成のうえお知らせください。
概要
Keeper Slackアプリは、ゼロスタンディング特権の実現を支援し、認証情報に関するワークフローの申請および承認をSlack上で直接行えるようにします。Slackエージェントおよびコマンダーサービスモードはお客様環境でホストされ、エンドツーエンド暗号化によりゼロ知識が維持されます。
本ドキュメントでは、Keeperシークレットマネージャーを使用した簡易セットアップ方式によるKeeper Slackアプリのインストール方法を取り扱います。KeeperシークレットマネージャーまたはKeeperPAMのライセンスをお持ちでない場合は、担当のKeeperアカウントマネージャーまでお問い合わせください。
機能
レコードアクセス申請
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ワークスペース
アプリのインストールおよび設定を行うための管理者権限が必要。
slack-app-setup コマンドを実行するには、Keeperシークレットマネージャー (KSM) を有効化しておく必要があります。KSMをご利用いただけない場合は、担当のアカウントマネージャーまでお問い合わせください。
セットアップ手順
以下のセットアップ手順では、コマンダーおよびSlackアプリのDockerイメージ (keeper/commander、keeper/slack-app) を使用します。本連携では、各サービスで使用する設定情報を保護するためにKeeperシークレットマネージャーも利用します。
Slackアプリの設定は、次の5つの手順で行います。
Slackアプリの作成
承認用チャネルの作成
コマンダーサービスモードの設定
Slackアプリ設定コマンドの実行
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アイコンを掲載しています。ダウンロードしてご利用ください。
画面左側のメニューで、[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] (アプリ認証情報)
生成したApp Token、Bot 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をコピーします。

手順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)
NgrokとCloudflareは同時に使用できません。必要に応じていずれか一方を選択してください。
Slackアプリの利用において必須ではありませんが、Jiraアプリなど他の連携機能を使用する場合は、クラウドトンネルの設定が必要になることがあります。
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
エンドポイント特権マネージャー承認および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サーバーへ転送します。
ホストマシン上で、次のコマンドを実行してサービスを起動します。
サービス起動の流れ
サービスは順番に起動します。
まずコマンダーサービスが起動し、APIキーを生成します。生成したAPIキーとサービスURLはボルトのレコードに保存されます。
ヘルスチェックにより、コマンダーサービスが正常に稼働していることを確認します。
ヘルスチェック完了後にSlackアプリが起動し、ボルトのレコードからAPIキーおよびサービスURLを自動取得します。

起動の確認
正常に起動していることを確認するため、ログを監視します。
コンテナの状態確認
コマンダーサービスのログ確認
セキュリティ上の理由により、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_token が xoxb- で始まっていることを確認する(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:write、commands、im:write、users:read、channels: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
リクエストの有効期限が切れている可能性がある
リクエストがまだ保留中か確認する。自動的に期限切れになっている場合がある
参考
最終更新
役に立ちましたか?

