Code Engine ジョブの作成
カスタム資格情報シークレットタイプにより、 Secrets Manager ユーザーは、 Secrets Manager API と統合を使用して、外部システム(例えば、 Artifactory, PagerDuty )の資格情報のライフサイクルを管理することができる。 カスタムのクレデンシャルシークレットを作成するには、まず IBM Cloud® Code Engine で プロジェクトをセットアップ し、 Secrets Manager とクレデンシャルを必要とする外部サービス間のインタフェースを行う ジョブを定義する 必要がある。
カスタム・クレデンシャルは、広範囲のサードパーティ・システムをサポートするので、 Code Engine ジョブを構成するためのガイダンスは、 Code Engine のベスト・プラクティスに焦点を当て、意図的に一般的なものとなっている。 パラメータが正しくフォーマットされ、有効な Code Engine プロジェクトとジョブを選択すると、 Secrets Manager はさまざまな設定でジョブを実行できます。 しかし、 Secrets Manager は、あなたのコンフィギュレーションが特定のユースケースに合致しているかどうかを検証するものではない。 提供されたセットアップを実行するだけだ。
外部プロバイダーと対話するためのジョブ・ロジックの実装を支援するために、 Secrets Manager は開発者向けのドキュメント、ベスト・プラクティス、ジョブ・ジェネレーターおよびデプロイメント・ツール、コード例を提供している。 カスタム資格情報プロバイダリポジトリで新しい資格情報プロバイダジョブを 設計する方法を学びます。
クレデンシャル・プロバイダーのジョブ・ライフサイクル
典型的な仕事の流れはこうだ:
- 新しいクレデンシャルが生成される。
- クレデンシャルが取り消された場合、クレデンシャルを削除する。
- シークレットタスクを更新し、その結果を Secrets Manager に送り返す。
次の Code Engine ジョブ・フロー図は、このライフサイクルを示している。
Secrets Manager 削除に失敗した後、資格情報の削除を毎日(最大 10 日間)再試行する。 リクエストの再試行は、適用可能な場合には推奨されるが、明瞭化のためにフロー図では省略されている。 シークレットタスク更新要求に対する 400 または 404 ステータス応答は、再試行によってシークレットタスクを更新できないことを示す。
セキュリティーに関する考慮事項
セキュリティを強化する:
- 最小特権の原則に従う :専用の秘密グループを使用して、必要な秘密のみにジョブアクセスを制限する。
- IAM ロール: ジョブの認証に使用する API キーを Secrets Manager に割り当てます。 SecretTaskUpdater ロールに割り当てます。 ジョブが秘密を読む必要がある場合は SecretsReader ロールを割り当てます。 どちらの役割も、専用のシークレットグループにスコープされるべきである。
- 個人を特定できる情報(PII)や機密データを避ける :個人を特定できる情報や機密データ(電子メールアドレスや社会保障番号など)を、入力パラメータやクレデンシャルIDとして使用しないでください。 Secrets Manager、入力パラメータやクレデンシャルIDは、機密性の高い秘密データではなく、メタデータとして扱われます。
エラー処理
資格情報プロバイダジョブが資格情報を作成または削除できない場合、 Secrets Manager を更新し、アプリケーションエラーコードとユーザー向けのエラーメッセージを表示しなければならない。 このエラーは、失敗したタスクの Secrets Manager コンソールに表示され、ユーザーは是正措置を適用できる。
トラブルシューティング
デフォルトでは、 Secrets Manager、完了したジョブを直ちに削除するように Code Engine。 これにより、ジョブ実行の累積を防ぎ、時間の経過とともにクォータ制限を超過するのを防ぐことができる。 しかし、開発中は、完了したジョブを保持して、その設定やログを確認したいと思うかもしれません。
Code Engine UIを使用して完了したジョブを保持する:
- IBM Cloud Console で Containers → Projects に移動し、資格情報プロバイダプロジェクトを開きます。
- プロジェクトページ内の「ジョブ」から 「ジョブ」タブをクリックし、ジョブを選択します。
- Configurationページで、Environment variablesタブを開く。
CE_REMOVE_COMPLETED_JOBS変数を探し、その行をクリックして編集する。- 環境変数の編集パネルで、値を例えば
IMMEDIATELYから4320(3日)に変更し、完了をクリックする。 - 環境変数ページに戻り、 Deployをクリックして変更を適用する。 完了したジョブは 3 日間保持されます。
本番環境でのジョブのトラブルシューティングには、 Code Engine を Cloud Logs と統合することをお勧めします。 セットアップ方法については、両サービスのドキュメントを参照してください。
次のステップ
Code Engine プロジェクトとジョブを作成したら、 カスタム資格情報エンジン構成の作成に 移ります。