mcpField
S
senhasegura

senhasegura

github.com/julianobarbosaセキュリティ1459 回インストール2 日前に更新
リポジトリ

senhasegura について

senhasegura(Segura)の特権アクセス管理向け統合スキルです。認証、認証情報・SSH キー API、シークレット配布、関連ワークフローを扱い、Claude Code 用のオプション MCP サーバー連携も記載します。

主な機能

  1. 01A2A OAuth 2.0 の設定
  2. 02PAM 認証情報・SSH キー API
  3. 03CI/CD 向け DSM シークレット
  4. 04Kubernetes シークレット同期
  5. 05パスワードローテーションのワークフロー
  6. 06MCP 連携のリファレンス

活用シーン

  1. 01OAuth クライアントの設定
  2. 02CI/CD パイプラインでのシークレット取得
  3. 03DSM シークレットの Kubernetes 同期
  4. 04SSH キーの登録やローテーション

MCP 対応

Claude Code 向けのオプション MCP サーバー連携を説明し、関連リファレンスと実装ファイルを案内します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill senhasegura

インストール後、Claude Code で/senhaseguraを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

Authentication.md
Dsm.md
Integrations.md
PamApi.md
Troubleshooting.md
References/
AzurePipelinesExample.yaml
DsmConfigExample.yaml
ExternalSecretExample.yaml
GithubActionsExample.yaml
GitlabCiExample.yaml
MappingExample.json
McpIntegration.md
OAuth1Legacy.md
PythonClient.py
PythonSdk.md
SecretStoreExample.yaml
TypescriptClient.ts
Tools/
SenhaseguraMcpServer.ts
Workflows/
InjectCiCdSecrets.md
RegisterSshKey.md
RotatePasswords.md
SetupA2A.md
SyncKubernetesSecrets.md

詳細

Senhasegura

スキルタイプ: ライブラリ/API リファレンス(タイプ 1)+データ取得(タイプ 3)。

senhasegura(Segura)Privileged Access Management プラットフォームの実践的な統合ガイドです。A2A OAuth 2.0 認証、PAM Core の認証情報および SSH キー API、CI/CD 向け DevOps Secret Manager(DSM)、Kubernetes 向け External Secrets Operator、MySafe、オプトイン方式の MCP サーバーについて説明します。

音声通知(呼び出し時)

curl -s -X POST http://localhost:31337/notify \
  -H "Content-Type: application/json" \
  -d '{"message": "Running the Senhasegura skill"}' \
  > /dev/null 2>&1 &

ワークフローの振り分け

トリガーワークフロー
「A2A をセットアップ」「senhasegura アプリケーションを作成」「初回の OAuth クライアント」Workflows/SetupA2A.md
「Kubernetes にシークレットを同期」「ESO + senhasegura DSM」Workflows/SyncKubernetesSecrets.md
「パスワードをローテーション」「ローテーションをスケジュール」「Executions モジュール」Workflows/RotatePasswords.md
「パイプラインでシークレットを取得」「CI/CD で DSM runb」Workflows/InjectCiCdSecrets.md
「SSH キーを登録」「SSH キーのローテーションを管理」Workflows/RegisterSshKey.md

リファレンスの振り分け

トピックファイル
OAuth 2.0 フロー、A2A アプリケーションの作成、トークンのキャッシュAuthentication.md
PAM Core エンドポイント — 認証情報、保管、SSH キーPamApi.md
DSM CLI、runb、mapping.json、External Secrets OperatorDsm.md
MySafe、Python/TypeScript クライアント、CI/CD パイプラインのテンプレートIntegrations.md
エラー、デバッグモード、レート制限、よくある障害Troubleshooting.md
MCP サーバー(オプトイン方式の Claude Code 統合)References/McpIntegration.md + Tools/SenhaseguraMcpServer.ts
レガシー OAuth 1.0 リファレンスReferences/OAuth1Legacy.md
Python SDK リファレンス(PAI 標準は TypeScript+Bun)References/PythonSdk.md

注意点

senhasegura の挙動のうち、分かりにくく、ユーザーが問題に遭遇しやすいものをまとめています。新たに判明した項目があれば追加してください。

#注意点
1GET /iso/coe/senha?credentialId=N は認証情報を自動的に保管状態にロックします。 実行後は必ず DELETE /iso/pam/credential/custody/N を実行してください。そうしないと、手動で解除するまで認証情報が保管されたままになります。並行ジョブでは、2 回目の取得時にデッドロックが発生します。
2OAuth 2.0 アクセストークンの TTL は 3600s です。401 のリトライ時ではなく、期限切れの 60 秒前をバッファとしてキャッシュを更新してください。401 のリトライが集中すると IDP に過剰な負荷をかけ、レート制限が発動します。
3/iso/coe/senha はレガシー A2A v1 のパスワード取得経路です。/api/pam/credential/{id} が返すのはメタデータのみです。現在もレガシー経路が使われているため、削除するリファクタリングはしないでください。
4A2A の認可で指定する IP 制限は、senhasegura から見た HTTP の送信元 IPと照合されます。Kubernetes の場合は Pod の IP ではなく、送信 NAT の IP です。クラスターの送信 IP を許可リストに追加してください。ESO の障害は、汎用的な「could not get provider client」エラーとして表面化します。
5DSM runb は、シークレットを現在の作業ディレクトリにある .runb.vars に書き込みます。作業ディレクトリがリポジトリのルートだと、誤ってコミットされるおそれがあります。必ず tmpdir から実行するか、SENHASEGURA_SECRETS_FILE=/tmp/runb.$$.vars を設定してください。
6External Secrets Operator のプロバイダーキーは senhasegura(小文字)、モジュールは DSM(大文字)です。大文字と小文字が混在すると、プロバイダーが見つからなくても通知されず、ESO は明確なエラーを出さずに調整に失敗します。
7dsm runb --tool-name <X> が受け付ける値は github、azure-devops、gitlab、linux です。Linux コンテナー以外(Windows ランナーなど、または環境が未指定の場合)で linux を使用すると、CI ログでシークレット値がマスキングされず、ログに漏えいします。
8References/ 内の Python および TypeScript クライアントは、getPassword を直接呼び出しても保管状態を自動解除しません。 try/finally を使用する withPassword(...)/password_context(...) ヘルパーを使用してください。
9トークンエンドポイントは /iso/oauth2/token です。/api/ ではなく /iso/ であることに注意してください。Senhasegura のパス形式では、/iso/(レガシー/コンソール)と /api/(新しい REST)が一貫せずに混在しています。
10多くのエンタープライズ環境では内部 CA が使われています。ignoreSslCertificate: true/SENHASEGURA_INSECURE: true を使うのは、ローカルでのデバッグに限ってください。適切な方法は、ca フィールドを使って CA バンドルを ESO にマウントすることです。

クイックリファレンス

# 1. Get token (1h TTL)
TOKEN=$(curl -s -X POST "$SENHASEGURA_URL/iso/oauth2/token" \
  -d "grant_type=client_credentials" \
  -d "client_id=$SENHASEGURA_CLIENT_ID" \
  -d "client_secret=$SENHASEGURA_CLIENT_SECRET" | jq -r '.access_token')

# 2. List credentials
curl -H "Authorization: Bearer $TOKEN" "$SENHASEGURA_URL/api/pam/credential"

# 3. Get password (auto-locks custody — see Gotcha #1)
curl -H "Authorization: Bearer $TOKEN" \
  "$SENHASEGURA_URL/iso/coe/senha?credentialId=123"

# 4. Release custody (REQUIRED after step 3)
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
  "$SENHASEGURA_URL/iso/pam/credential/custody/123"

# 5. DSM secret fetch via CLI
dsm runb --tool-name github \
  --application my-app --system production --environment prod
source .runb.vars && rm -f .runb.vars

環境変数

SENHASEGURA_URL="https://senhasegura.example.com"
SENHASEGURA_CLIENT_ID="oauth2-client-id"
SENHASEGURA_CLIENT_SECRET="oauth2-client-secret"

# DSM CLI optionals
SENHASEGURA_CONFIG_FILE="/path/to/config.yaml"
SENHASEGURA_MAPPING_FILE="/path/to/mapping.json"
SENHASEGURA_SECRETS_FILE="/tmp/runb.$$.vars"   # don't write into repo root
SENHASEGURA_TIMEOUT="30"
# SENHASEGURA_INSECURE — local debug only; mount the CA bundle in prod

ドキュメントへのリンク

実行ログ

ワークフローを実行するたびに追記してください。

echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Senhasegura","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' \
  >> ~/.claude/PAI/MEMORY/SKILLS/execution.jsonl

コメント