第2章 GitOps で Secrets Store CSI ドライバーを使用したシークレットのセキュアな管理
このガイドでは、OpenShift Container Platform 4.14 以降で Secrets Store Container Storage Interface (SSCSI) ドライバーを GitOps Operator と統合するプロセスを説明します。
2.1. GitOps で Secrets Store CSI ドライバーを使用したシークレット管理の概要
アプリケーションには、パスワードやユーザー名などの機密情報が必要なものがありますが、適切なセキュリティー対策として、これらを非表示にする必要があります。ロールベースのアクセス制御 (RBAC) がクラスターで適切に設定されていないために機密情報が公開された場合、API または etcd アクセス権を持つユーザーは誰でもシークレットを取得または変更できます。
namespace で Pod を作成する権限を持つユーザーであれば、その RBAC を使用して対象の namespace 内のシークレットを読み取ることができます。SSCSI Driver Operator を使用すると、外部シークレットストアを使用して機密情報を保存し、Pod に安全に提供できます。
OpenShift Container Platform SSCSI ドライバーを GitOps Operator と統合するプロセスは、以下の手順で構成されます。
2.1.1. 利点
SSCSI ドライバーを GitOps Operator と統合すると、次の利点があります。
- GitOps ワークフローのセキュリティーと効率を向上する
- ボリュームとしてのデプロイメント Pod へのシークレットのセキュアな接続を容易にする
- 機密情報に安全かつ効率的にアクセスできるようにする
2.1.2. シークレットストアプロバイダー
次のシークレットストアプロバイダーは、Secrets Store CSI Driver Operator で使用できます。
- AWS Secrets Manager
- AWS Systems Manager Parameter Store
- Microsoft Azure Key Vault
たとえば、SSCSI Driver Operator でシークレットストアプロバイダーとして AWS Secrets Manager を使用していることを考えてみましょう。次の例は、AWS Secrets Manager からのシークレットを使用する準備ができている GitOps リポジトリーのディレクトリー構造を示しています。
GitOps リポジトリーのディレクトリー構造の例
├── config │ ├── argocd │ │ ├── argo-app.yaml │ │ ├── secret-provider-app.yaml 1 │ │ ├── ... │ └── sscsid 2 │ └── aws-provider.yaml 3 ├── environments │ ├── dev 4 │ │ ├── apps │ │ │ └── app-taxi 5 │ │ │ ├── ... │ │ ├── credentialsrequest-dir-aws 6 │ │ └── env │ │ ├── ... │ ├── new-env │ │ ├── ...
- 2
aws-provider.yaml
ファイルを保存するディレクトリー。- 3
- AWS Secrets Manager プロバイダーをインストールし、そのリソースをデプロイする設定ファイル。
- 1
- アプリケーションを作成し、AWS Secrets Manager のリソースをデプロイする設定ファイル。
- 4
- デプロイメント Pod と認証情報リクエストを保存するディレクトリー。
- 5
SecretProviderClass
リソースを格納するディレクトリー。シークレットストアプロバイダーを定義します。- 6
credentialsrequest.yaml
ファイルを保存するフォルダー。このファイルには、シークレットをデプロイメント Pod にマウントするための認証情報要求の設定が含まれます。