DevSecOps製品
HashiCorp Vault(ヴォルト)
シークレット管理ソリューションVaultでDevSecOpsを加速
事業や経営を取り巻く環境が猛烈なスピードで変化する昨今、企業はこれまでの経営の仕組みやビジネスプロセスなどを、デジタルトランスフォーメーションにより対応していく必要に迫られています。
例えばECサービスでは、日々変化する消費者の嗜好についていくためシステム更新を頻繁に行う必要があります。
マルチクラウド時代の具体的なセキュリティ対策として被害を例にIDベースセキュリティ、シークレット情報を保護する必要性と、この問題を解決するシークレット管理ソリューション Vaultをご紹介します。
DevOps時代のセキュリティ
DevOpsやデジタルトランスフォーメーションによりシステム構築やリリースのスピードが加速していく中、情報漏えいによるセキュリティ事故は後を絶ちません。
この背景には、システムがクラウドのような新しい環境に移行している一方で、既存のシステムセキュリティのノウハウのままで新しいシステムを運用している点があげられます。
クラウド活用が進む中、セキュリティの要がネットワーク単位の通信の領域からIDの領域に移ろうとしています。システムは益々ダイナミックな環境となり、従来型のFirewallに代表される、境界防御だけではセキュリティは守れません。実際、多くのクラウド先行企業で次のような「シークレット(Secrets)」※1の漏えいによる不正アクセスを経験しています。
- ※1ITサービスを利用するために必要な情報であり、外部に漏れてしまったら多大な損害を被る可能性の高い情報の総称。「クレデンシャル情報」と言う場合もあります。
シークレットの例:ユーザID/パスワード、APIトークン、証明書、シークレットキー
シークレットの漏えいによる不正アクセスの例
パブリッククラウドのアクセスキーを含んだソースコードを公開リポジトリ登録してしまい、そこから流出したアクセスキーを攻撃者に使用されることにより、以下の事故が発生。
- パブリッククラウドのインスタンスを仮想通貨マイニング目的のために大量に起動され、その結果、高額のクラウド利用料が請求される。
- データベースへの不正アクセスにより暗号化されていない顧客情報が漏えいする。
ラックは、マルチクラウド環境でシークレットを保護・管理する「Vault」により、DevOpsにセキュリティの要素を加えたDevSecOpsの実現を支援します。
Vaultとは
マルチクラウド環境でシステムを構築し運用するには、シークレット管理を厳密に行いつつも、ユーザビリティを高める必要があります。Vaultでは統一化されたセキュリティポリシーに基づき自動化された管理手段を導入することで安全性と利便性を高めます。
VaultはDevSecOpsによるダイナミックなシステム構築と運用をより円滑にするとともに、外部の攻撃者だけでなく、内部の管理者や開発者による不正な行動も防ぐことができます。
シークレットを安全に保護、管理するVaultの主な5つの機能
1. シークレットの動的管理
Vaultの最大の特長である「シークレットの動的管理」機能により、一時的にシステムにアクセスできるID、パスワードをVaultが自動生成し、IDに対して有効期限を設定することで自動廃止や使用期限の延長および手動廃止が可能となります。
これによりマルチクラウド環境での複数システムの認証情報を、ユーザに代わってVaultが安全に一元管理をオンデマンドで行います。
この動的管理機能は他のシークレット管理サービスでは実装されておらず、HashiCorp Vault 独自機能となります。(2019年5月時点)

2. 様々なシークレットを一元管理
シークレットといっても様々な種類があります。例えばMicrosoft Office 365やG Suite、SalesforceといったSaaSを利用するためのユーザID+パスワード、APIを利用するためのAPIキー、パブリッククラウドを利用するためのアクセスキー、シークレットアクセスキーなどがあります。また、様々なプラットフォームもサポートしています。
Vaultで管理できるシークレット(一例)
- AWS
- Microsoft Azure
- Google Cloud Platform
- Active Directory
- Database
- SSH
- Key value
多様なプラットフォームをサポート
Vaultでは以下の動作環境をサポートします。
- Linux
- Windows
- Mac OS X
- FreeBSD
- NetBSD
- OpenBSD
- Solaris
3. 多種多様な暗号化アルゴリズムをサポートし、連邦情報処理規格FIPS 140-2に準拠
Vaultでサポートする暗号化アルゴリズム
Vaultでは様々な暗号化アルゴリズムを利用しシークレット情報を暗号化することができます。
- aes256-gcm96
- chacha20-poly1305
- ed25519
- ecdsa-p256
- rsa-2048
- rsa-4096
連邦情報処理規格FIPS 140-2に準拠
Vault Enterprise0.9以降では、ハードウェアセキュリティモジュール(HSM)との連携により連邦情報処理規格FIPS 140-2※2に準拠している旨、認定を受けております。
- ※2FIPS 140-2(Federal Information Processing Standardization 140-2)は2001年5月に発行された、米国連邦政府の省庁等各機関が利用するハードウェア及びソフトウェアの暗号モジュール要件に関する規定です。米国連邦政府機関が暗号モジュールを調達する際にはFIPS 140-2、もしくはその前身であるFIPS 140-1適合認定を取得しているものである必要があります。
4. シークレットへのアクセスコントロール
ACLを定義しシークレット情報およびシステムへのアクセス権を制御します。これにより運用担当者と開発者で参照可能なシークレット情報を分ける等の管理が可能となります。
5. シークレットへのアクセスの監査
いつ・誰が・どのシークレットへアクセスしたか記録します。
Vaultによる課題の解決ケース
Vaultは、シークレット管理におけるID漏洩リスクやID管理の負荷など様々な解決策を提供します。
複数のユーザでパブリッククラウドのアクセスキーを共有している場合

- ユーザが同一のアクセスキーを使用するため、多くの権限を付与しなければならず、リスクにつながる
- アクセスキーの漏洩時の影響は、広範囲となる
- 誰が、いつ、どこにアクセスしたのか、確認することができない

- ID管理者に代わり、Vaultがユーザ毎にアクセスキーを発行するため、誰が・いつ・どこにアクセスしたか把握できる
- 万が一アクセスキーの漏洩があった場合でも、早急にアクセスキーを廃止するなどの対応ができ、漏洩による影響範囲を最小限にすることができる
- ユーザ毎のアクセスキーを自動的に作成するため、運用管理業務の削減が図れる
- ユーザ毎の権限をポリシーとして定義し自動でアクセスキーを発行することで、人為的なミスを防ぐことができる
データベースへのアクセス情報がソースコードにハードコーディングされている場合

- クラウドインスタンスを大量に起動される、もしくは機密情報の漏洩につながる
- 誰が、いつ、どこにアクセスしたのか確認できない
アクセスキーを含んだソースコードを公開リポジトリに登録した場合、公開されたアクセスキーを攻撃者に奪取され、最終的に、攻撃者がアクセスキーを使用してクラウドインスタンスを大量に起動することが可能となります。そこから流出したアクセスキーを不正に使われ、クラウド事業者からの高額な請求がきてしまう被害などが発生します。アクセスキーを不正使用され機密情報の漏洩にもつながります。

Vault導入後は、アプリケーションはアクセスキーをVault経由で取得するため、ソースコードに直接アクセスキーをハードコードすることはありません。そのため、公開リポジトリにソースコードを登録しても、アクセスキーが含まれていないため、攻撃者がアクセスキーとともに、クラウドインスタンスを立ち上げることはできず、高額請求のような被害を防ぐことができます。
その他、シークレットへのアクセスログや監査ログを取得していない場合も、Vaultが監査ログを記録することで、過去のアクセス履歴を確認し、情報漏えい時の早期解決や監査証跡管理を実現できます。