2017-09-15 13 views
1

私は、開発者がコードをリポジトリにプッシュし、CIサーバー上でビルドを開始するセットアップを得ました。現在、配備はCIサーバーによっても行われています。プロダクション環境への配備の場合、Jenkinsはprod-serversにrootとしてログインする必要があります。ビルドサーバーで資格情報を保護する方法は?

つまり、資格情報(例:ユーザー名/パスワードまたは秘密鍵)をCIシステムに配置する必要があります。これにより、リポジトリにアクセスするすべての開発者は、コードをビルドプロセスに注入することによってこれらの秘密の資格情報を読み取ることができるという問題が発生します。

リポジトリにアクセスしてもCIサーバーの資格情報にアクセスできないようにするにはどうすればよいですか?

+0

'jenkinsはprod-serversにrootとしてログインする必要があります。なぜprod-serverをJenkinsのスレーブにしませんか? – Tuan

+0

私が見る限り、これは一つのことを変えるものではありません。コードビルドビルド(およびビルドプラン)は安全でなく、秘密情報を収集することができます。 – gorootde

答えて

0

Jenkinsの「Credentials」オブジェクト(プラグイン「Credentials」)を使用することができます。 Jenkinsのサイドメニューから "Credentials"に移動し、新しいCredentials項目を作成します。これらの項目はJenkinsの中に保存され、SCMリポジトリには保存されません。

これで、Jenkinsのパイプラインまたはフリースタイルジョブの資格情報を使用できます。 開発者が資格情報にアクセスできないように、Jenkinsのアクセス許可を設定します。 Jenkinsは、これらの資格情報をアスタリスク(***)で置き換えることによってコンソール出力にリークするのを防ぎます。

jenkinsfileを使用している場合は、実際には開発者に完全な制御権を与えています。これはセキュリティ上の悪い習慣です。 DeveloperとDevOpsの役割を分けるために、アーティファクトのみをプロダクションにデプロイするJenkinsジョブを作成します。デプロイメントパイプラインをjenkinsfileに保存しないでください(または、異なる権限を持つ新しい "DevOps"リポジトリに格納する)。正常に完了したら、展開ジョブをトリガーするようにビルドジョブを構成します。スコープ/権限を使用して資格情報と配備ジョブへのアクセスを保護する

+0

このソリューションは、JenkinsfileがSCMにあるため、開発者が資格情報を取得するのを妨げることはありません。現像剤は、例えば、資格情報をファイルにダンプしてアーティファクトとしてダウンロードします(これはアスタリスクのものではありません) – gorootde

+0

jenkinsfileを使用している場合は、実際に開発者に完全な制御権を与えています。 DeveloperとDevOpsの役割を分けるために、アーティファクトのみをプロダクションにデプロイするJenkinsジョブを作成します。デプロイメントパイプラインをjenkinsfileに保存しないでください(または、異なる権限を持つ新しい "DevOps"リポジトリに格納する)。正常に完了したら、展開ジョブをトリガーするようにビルドジョブを構成します。スコープ/権限を使用して資格情報と展開ジョブへのアクセスを保護します。 –

関連する問題