概要
シークレット管理は、パスワード、アプリケーション・プログラミング・インタフェース (API) キー、設定ファイルなどの IT 認証情報を制御するプロセスです。IT 企業は、機密情報を保護し最新の状態に保つこと、および必要とする人やシステムがそうしたリソースを利用できるようにすることを実現するためにシークレット管理を使用します。
シークレット管理は幅広い概念です。エンタープライズ環境では通常、優れたシークレット管理とは、シークレットを保存する一元化された場所を用意し、そのシークレットリポジトリを IT 自動化ツールと統合することを意味します。ソフトウェア開発チームの立場から見たとき、シークレット管理は DevSecOps ワークフローの一部となっている場合があります。この記事では、エンタープライズ・シークレット管理の仕組みとメリットについて詳しく説明します。
シークレット管理の仕組み
シークレットは重要な情報です。パスワードを付箋に書き留めてコンピュータに貼っておくようなことはしないでしょう。(そうしている場合は、より優れたシークレット管理を行うことを強くお勧めします。)シークレットが漏洩すると、攻撃者が機密データにアクセスしたり、さらに他のシークレットにアクセスしたり、システム内でラテラルムーブメントを行ったりすることを許してしまう可能性があります。
シークレット管理を行わない場合、つまり従来の方法では、シークレットを手動のプロセスで追跡します。単純な例として、チームの全員が必要に応じてさまざまなアカウントにアクセスする必要があるとします。そこで、すべてのログイン認証情報を 1 つのドキュメントにまとめて、全員で共有します。この方法は、一時的にはうまくいくかもしれませんが、必要以上のアクセス権が付与されてしまいます。
その結果、さまざまな形で混乱を招き、不要なリスクが生じる可能性があります。たとえば、誰かがパスワードを変更したにもかかわらず、リストの更新を忘れることがあるかもしれません。あるいは、誰かがリストをコピーした結果、複数バージョンのリストができてしまうかもしれません。誤ってリストを消去してしまう可能性もあります。また、パスワードをスクリプトにハードコーディングして公開リポジトリにプッシュする人が出てくるかもしれません。その場合、そのシークレットは公開されてしまいます。職場の誰かのアカウントがハッキングされ、悪意のある攻撃者にリストへのアクセスを許してしまうと、記載されているあらゆるものにアクセスされてしまいます。
シークレット管理は、このような問題を防ぐ方法を提供します。すべてのセキュリティ制御を常に厳格に適用する必要はありません。効果的なシークレット管理では、特定の領域でシークレットが漏洩する可能性を減らすために、戦略的にセキュリティオプションを適用します。優れたシークレット管理の基盤には、次のようなものがあります。
- ID 管理とアクセス管理 (IAM):IAM では、1 つのシステムを通じてユーザー認証を処理し、そこからユーザーを他のシステムに接続します。一元的な認証管理には、LDAP (Lightweight Directory Access Protocol) や SAML (Security Assertion Markup Language) などの標準が使用されます。
- アクセス認証情報の暗号化:暗号化を行うと、シークレットは復号キーがないと判読できない文字列に変換されます。リモートアクセスに広く使用されているセキュアシェル (SSH) プロトコルは、暗号化キーを利用しています。暗号化方式はさまざまな強度のものから選択できます。また、暗号化キーを毎週ローテーションするなどの標準的な手法を導入できます。暗号化はエンコーディング (誰でも簡単に元に戻すことができるよう、シークレットを標準的な方法で変換する) の対局と言えます。
- ロールベースのアクセス制御 (RBAC):RBAC では、チームまたはより大きな組織内のユーザーのロールに基づいて、リソースへのアクセスを提供します。これにより、IT 管理者はユーザーを職務機能ごとにグループ化し、ユーザー 1 人ずつではなく、グループ全体の権限を一度に管理できます。
- 証明書の管理:証明書は、ネットワーク間の通信を保護する暗号化プロトコルです。SSL (Secure Sockets Layer) 証明書と TLS (Transport Layer Security) 証明書は、インターネット通信の標準となっています。サーバーの信頼を確立するには、認証局 (CA) が発行した電子証明書が必要です。SSL 証明書は定期的に更新する必要がありますが、シークレット管理システムを使用すると、このプロセスを自動化して制御できます。
- ゼロトラストの原則: ゼロトラストとは、あらゆる通信が信頼できない状況で始まることを前提とした、近年普及しているセキュリティ・アーキテクチャのアプローチです。機密性の高いリソースへのアクセスは、粒度が小さい単位でのみ許可されます。ゼロトラストは、ユーザーは絶対に必要なリソースにのみアクセスすべきであるという、最小特権の概念に基づいています。
シークレット管理は、特定の概念や実践方法に依存するものではありません。むしろ、さまざまな一般的な戦略を一元化および自動化されたプロセスに統合することが重要になります。
Red Hat のリソース
シークレット管理のメリット
シークレット管理はデータを保護するだけでなく、他の重要な面でも運用を全体的に改善します。
- セキュリティアイランドの回避:シークレット管理を一元化することで、組織内の一部のグループだけが他の誰にも付与されていない特別なアクセス権を持つという状態を防ぐことができます。
- 悪意ある攻撃者の特定:強力な検証要件を実装することで、ハッカー予備軍を簡単に遮断し、認証されたユーザーになりすまそうとする試みを阻止することができます。
- 認証情報の自動化:認証情報の確認とアドミッションを自動化することで、ユーザーの認証に必要な手作業が減り、ユーザーのワークフローが妨げられることもなくなります。
エンタープライズ・シークレット管理へのアプローチ
エンタープライズ・コンピューティング環境では、ほかの環境に比べてリスクが大きく、シークレット管理はさらに複雑になります。管理者は多数のさまざまなシステムやデータセットへのアクセスを責任を持って割り当てる必要があり、多くのユーザーは時間帯によってさまざまなリソースにアクセスする必要があります。エンタープライズ・シークレット管理は確立された分野であり、オープンソース・ソリューションを含むさまざまな選択肢があります。
Red Hat® Ansible® Automation Platform と Red Hat OpenShift® はオープンスタンダードに準拠しており、数多くのシークレット管理ツールとの統合に対応しています。Ansible Automation Platform のシークレット管理機能には、HashiCorp Vault、CyberArk、AWS Secrets Manager、Azure Key Vault など、他の主要なプラットフォームとの統合が含まれています。
HashiCorp Vault
HashiCorp Vault は、IAM とシークレット管理の一元化されたプラットフォームです。Vault は、時間制限のある動的な認証情報を提供し、機密データの信頼できる唯一の情報源を維持できるようにします。Vault エージェントは、Red Hat Ansible Automation Platform および Red Hat OpenShift と統合して、カスタム IT 環境全体でアクセス認証情報と証明書を管理できます。
Vault と Red Hat Ansible Automation Platform を連携させると、アクセス制御に加え、コンプライアンスの監査および修復を適用するのに役立ちます。リスクの低減、監査の単純化、インフラストラクチャの変更がコンプライアンスに準拠しており追跡可能であることの保証など、一元化されたガバナンスによるメリットが得られます。
CyberArk
Red Hat と CyberArk で認証情報とデータを保護する (動画の再生時間:2:03)
CyberArk は、リソースへのユーザーアクセスを管理する IAM およびシークレット・プラットフォームを提供します。Red Hat Ansible Automation Platform は CyberArk Conjur と統合が可能で、DevOps および継続的インテグレーション/継続的デリバリー (CI/CD) ツールでの使用を含め、アプリケーション環境でのセキュリティポリシーの適用とシークレット管理をサポートします。
DevOps プロセス全体に、シークレット管理のベストプラクティスを自動的に組み込むことができます。これには、アプリケーションで使用するシークレットのプロビジョニング、組織のセキュリティポリシーに基づくシークレットのローテーション、特権ユーザーアクセスの監視、可視性の向上、コンプライアンス標準の遵守などが含まれます。
Kubernetes 環境でのシークレット管理
Red Hat OpenShift 環境などの Kubernetes デプロイメントでは、アプリケーションはコンテナのフリートとして編成されます。各コンテナは、他のシステムと通信して意図した機能を実行するためにシークレットにアクセスする必要があります。
Kubernetes でシークレットを管理するための主な方法には、環境変数とボリュームマウントの 2 つがあります。
- 環境変数を使用する場合、シークレットのキー値ペアが環境変数としてコンテナに直接注入されます。
- ボリュームマウントを使用する場合、シークレットはコンテナのファイルシステムにファイルセットとしてマウントされます。アプリケーションコードは、これらのファイルからシークレットデータを読み取ります。
ボリュームマウントにはさまざまなセキュリティ上の利点があるため、Red Hat OpenShift ではこのアプローチが推奨されています。Red Hat OpenShift のセキュリティモデルは環境変数を保護するための基本的な機能を備えていますが、デフォルトでボリュームマウントを使用することで、シークレットを可能な限り安全に保つことができます。
関連する手法として Kubernetes Secret があり、オブジェクトを使用してアプリケーションのコードから機密データを切り離してシークレットがコード自体に含まれないようにします。これは、GitOps のセキュリティ・アーキテクチャ・プラクティスに沿っています。
セキュリティへのアプローチで Red Hat を活用する理由
Red Hat は、オープンソース・セキュリティの原則を適用して、お客様、コントリビューター、パートナーから成るコミュニティをデジタルセキュリティの脅威から保護します。これには、製品に組み込まれたシークレット管理のサポートや、他のシークレット管理ソリューションとの統合が含まれます。
Red Hat Enterprise Linux® は、高度に動的でスケーラブルな環境で、一元化された ID 管理、認証、認可を行うための基盤を提供します。
Red Hat OpenShift は、DevOps アプローチに合わせたシークレット管理戦略など、コンテナベースのアプリケーション開発向けに組み込み型のセキュリティ制御を提供します。
Red Hat Ansible Automation Platform は、一般的なシークレットリポジトリと統合できるようにするとともに、シークレット管理の一元的な自動化を確立するのに役立ちます。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。