プラクティス集@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パイプライン上で実行しているステップ (例:ホワイトボックステスト、デプロイなど) の結果が通知されるようにする。
通知があることと品質を高めることは直接的には関係ないが、開発者の作業効率が上がるため、間接的に品質を高めることにつながる。