プラクティス集@CircleCI¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. CircleCI に関する脆弱性対策¶
CircleCI に関する脆弱性対策とは¶
対象のソースコードの脆弱性ではなく、CircleCI に関するそれに対処する。
認証/認可¶
▼ CircleCI の操作ユーザーの場合¶
CircleCI の操作アカウントを認証し、認可する。
利便的かつ安全な認証/認可方法を選ぶ。
| 認証/認可方法 | 二要素認証 | 推奨/非推奨 |
|---|---|---|
| ベーシック認証 | - | 非推奨 |
| 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 パイプライン上で実行しているステップ (例:ホワイトボックステスト、デプロイなど) の結果が通知されるようにする。
通知があることと品質を高めることは直接的には関係ないが、開発者の作業効率が上がるため、間接的に品質を高めることにつながる。