コンテンツにスキップ

プラクティス集@CircleCI

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. CircleCIに関する脆弱性対策

CircleCIに関する脆弱性対策とは

対象のソースコードの脆弱性ではなく、CircleCIに関するそれに対処する。


認証/認可

▼ CircleCIの操作ユーザーの場合

CircleCIの操作ユーザーを認証し、また認可する。

利便的かつ安全な認証/認可方法を選ぶ。

認証/認可方法 二要素認証 推奨/非推奨
Basic認証 - 非推奨
OAuth あり 推奨
なし 非推奨
OIDC あり 推奨
なし 非推奨
SAML あり 推奨
なし 非推奨

▼ CircleCI自体の場合

CircleCIを認証し、また認可する。

期限 説明 方法 推奨/非推奨
恒久的 CircleCIを恒久的に認証し、また同様に恒久的に認可する。 ・AWSの場合、ツールにIAMユーザを紐付けておき、このIAMユーザーに常にIAMロールを紐付けておく。
・GCPの場合、ツールにIAMユーザを紐付けておき、このIAMユーザーに常にロールを紐付けておく。
非推奨
一時的 CircleCIを一時的に認証し、また同様に一時的に認可する。 ・AWSの場合、ツールにIAMユーザー/SAMLユーザー/OIDCユーザーを紐付けておき、AWS STSで一時的に認証する。また、AssumeRoleによるスイッチロールでは、認可スコープを一時的に付与する。
・GCPの場合、ツールにIAMユーザーを紐付けておき、条件付きロールバインディングで認可スコープを付与する。
推奨


機密な変数やファイルの管理

たとえ、CircleCIから機密な変数が漏洩しても、復号化しにくいようにする。

CircleCIの実行環境に出力する変数やファイルは、base64形式や暗号化キーであらかじめエンコードしておき、使用時にデコードまたは復号化する。


02. 事後処理

通知

CIパイプラインとCDパイプライン上で実行しているステップ (例:ホワイトボックステスト、デプロイなど) の結果が通知されるようにする。

通知があることと品質を高めることは直接的には関係ないが、開発者の作業効率が上がるため、間接的に品質を高めることにつながる。