シークレットの保管
目次:
概要
課題
パスワード、秘密鍵、認証トークンなどのシークレットを保管する必要があります。
一部のシークレットはユーザー指向です。たとえば、開発者が携帯電話を使ってサービスのパスワードを調べられるようにしたい。
一部のシークレットはシステム指向です。たとえば、継続的デリバリーパイプラインが、クラウドホスティングの資格情報を調べられる必要がある。
決定
ユーザー指向のシークレットには Bitwarden
システム指向のシークレットには Vault by HashiCorp。
状態
決定済み。新しい代替案が現れた場合は、それに対してオープンです。
詳細
前提
この目的と現在の状態においては、使いやすいモバイルアプリなど、ユーザー指向の利便性を重視します。
外出先でも素早く簡単にアクセスできるようにしたい。たとえば、オンコールのシステム信頼性エンジニアリングを行う開発者のため。
チームなど、選ばれた人々の間で一部のシークレットを共有できるようにしたい。
単一プロバイダー、たとえばすべてのシークレットを Amazon、Azure、Google のみに保管するといった解決は目指していません。
「覚えておく」「メモに書く」「各自で保管方法を考える」といった場当たり的なアプローチは望みません。
この目的における私たちのセキュリティモデルは、SaaS のパスワード管理ツールなど、評価の高い COTS ベンダーの使用で問題ありません。
制約
今は簡単なものが欲しい。つまり、コードを書く必要がなく、サーバーをインストールする必要がなく、大きなコミットメントをする必要がなく、全員を標準化する必要がないもの。
ポジション
次を検討しました:
ユーザー指向の既製パスワードマネージャー: LastPass、1Password、Bitwarden、Dashlane、KeePass、pass、GPG など。
システム指向の COTS パスワードマネージャー: AWS KMS、Vault by HashiCorp、EnvKey、Secret Server by Thycotic、Devolutions Password Server、Confidant by Lyft。
共有指向のアプローチ: 共有 Google ドキュメント、共有 Slack チャンネル、共有ネットワークフォルダーなどの使用。
覚える、メモを書く、各ユーザーに自分のやり方を考えさせるなどの、ローテクな場当たり的アプローチ。
論拠
Bitwarden、LastPass、1Password、Dashlane はいずれも市販の既製品です。
ユーザー、チーム、組織などに対する、同様の種類の機能。
Windows と Mac のデスクトップ機能、Android と iOS のモバイル機能。
自動フォーム入力などのための、Chrome と Firefox のブラウザー拡張機能。
Bitwarden には、他に対して 2 つの利点があります:
Bitwarden はオープンソースであり、セキュリティをピアレビューでき、またセキュリティ志向の開発者から会社が広く評価されています。
ソフトウェア関係者の逸話は、他よりも Bitwarden を大きく好むことを述べています。
典型的な良い記事の例: https://jcs.org/2017/11/17/bitwarden
典型的な横並び投票サイトの例: https://stackshare.io/stackups/bitwarden-vs-dashlane
KeyPass、pass、GPG などは、追加の複雑さがあるため見送ります。これらはすべて、技術的なユーザーにとって優れたソリューションに見えます。特に GPG は、システム間でコマンド指向の機能を求める技術的なユーザーにとって優れているように見えます。
KMS は、単一プロバイダーへのロックインがあるため見送ります。
システム指向のニーズには Vault を選びます。レビューが驚くほど肯定的であり、HashiCorp が最高品質のソフトウェアとサポートの優れた実績を持っているためです。
共有ドキュメント、共有チャンネル、共有ネットワークフォルダーなどを介した共有アプローチは拒否します。これらは、私たちが求めるセキュリティ品質を提供しません。
ローテクな場当たり的アプローチは拒否します。長期的な道ではないということで、全員が同意しているためです。
影響
開発者は、シークレットを 2 か所で追跡する必要があるかもしれません: ユーザー指向のアクセスには Bitwarden、システム指向のアクセスには Vault。
関連
関連する決定
どの CI/CD サーバーを選ぶかの決定には、シークレットにアクセスする能力の証明を含める必要があります。
ポリシー、ローテーション、組織などの観点から、シークレットをどのように管理するかを決める必要があります。
関連する要件
シークレットには、コンプライアンス、監査、人事のオンボーディング/オフボーディングに関する関連要件があります。
関連する成果物
一部のシークレットを環境変数にエクスポートする可能性があります。
関連する原則
容易に元に戻せる。
容易に並列化できる。つまり、さまざまなパスワードマネージャーを簡単に使用できる。
試すのに安価。つまり、無料トライアルがあり、コミットメントがない。
メモ
評価メモはここに。メモはすべて、さまざまな devops 掲示板での公開コメントです。
Vault by HashiCorp
Vault はまさにここで求めているものです。
ただし、Vault をいきなり本番環境に投入しないでください。まずテスト環境で立ち上げてください。HashiCorp の文書は、製品が素晴らしくても、かなり不十分なことがあるからです。
学習曲線が非常に急で、立ち上げは簡単ではありません。
初期セットアップは少し面倒です。しかし、それだけの価値は十分にあり、コミュニティは乗り切れる程度には十分にサポートしてくれます。
文書はひどいですが、セットアップした人々のオンラインガイドがたくさんあり、そのいくつかを組み合わせれば、動作するセットアップが手に入ります。
初期セットアップでは、彼らの helm チャート(vault と consul)をいじる必要がありました。技術的には他の多くのバックエンドを使用できますが、本当にお勧めしません。保存するデータが多くなければ、バックエンド/consul はごく小さくて構いません。
CLI の使用に慣れ、親しんでおくことは必須です。GUI は、エンタープライズ版の概念実証/広告ポータルのようなものだからです。
単に「いっぱいにする」ことができないのは面倒です。たとえば 5 つのフィールドがある場合、各アイテムについて各フィールドを手動で追加する必要があります。つまり、特定のカテゴリのフィールドを事前に定義して、そのカテゴリのすべてのアイテムでそれらのフィールドを埋める、というものではなく、「毎回すべてを生成する」という感じで、(私の考えでは)非常に面倒です。
vault の上の UI として goldfish も見ておくとよいかもしれません。チームを巻き込むのにかなり良いものになります。デモもあります。1. consul をセットアップする。2. consul を指す vault をセットアップする。3. vault を指す goldfish をセットアップする。3. バックアップのために consul snapshot を実行する cron ジョブをセットアップする。
LastPass
LastPass Teams。私たちは使っており、カスタムテンプレート、ACL があり、私見では足りないものはありません。
自分の組織に LastPass を導入し、C+/B- の評価をつけています。最近の最大の問題は信頼性の欠如です。過去 90 日間に、保管庫が強制的にオフラインモードに置かれた時間が何時間もありました。これは、20 以上の共有フォルダーに文字通り 4,000 以上のパスワードが保存されている私の組織にとって理想的ではありません。想像できるように、それだけのパスワードがあると、少なくとも数件は毎日更新または追加されます。問題が 1〜2 時間以上続く場合の DR 計画があります: スクリプトが毎晩、保管庫の CSV ダンプに署名して暗号化し、keepass にインポートできるようにします。
LastPass には、報告されていないサービス劣化の一時的な不具合がありました: ログインは「機能する」がサイトを取得しない、管理パネルでランダムな機能が壊れる、新しい最上位の共有フォルダーの鍵が適切に共有されない、など。すべてのグループに属している特定の「キープッシュ」/バックアップユーザーがいます。通常、そのユーザーとしてログインすると鍵共有の問題は解決しますが、ステータスページが何と言おうと、サービスが劣化しているときは解決しません...
統合については、最小権限モデルを備えた適切な ACL があれば簡単になり得ます。たとえば、ユーザーがエントリやフォルダーに対して読み書きと読み取り専用の両方を持っている場合、読み取り専用の権限だけが付与されます。残念ながら、私の組織の ACL は最善ではないため、数百の ACL の依存的な性質が最小権限モデルにうまくマッピングされないことから、JSON プロビジョニング API と約 500 行の python を使用することになりました。最終的に、ユーザーが属していたすべての ACL を取得し、一種の依存関係の探索を行いました。
ACL やグループ構造が最初から最小権限の構造を念頭に構築されているなら、Windows 用の AD/LDAP 同期ツールはうまく機能します。
営業チームに連絡すれば、より長いエンタープライズトライアルを提供してもらえます。決断する前に、その制限を十分に理解しておいてください。私たちは成長痛をかなり経験しましたが、サーバー側の障害や損傷を除けば、非常にスムーズでした。
Bitwarden
Bitwarden には優れたツール群(WebUI、CLI、モバイル、デスクトップ)があります。セルフホストでき、セットアップはかなり簡単です。文書はかなり良く、PrivacyTools の推奨ツールです。
EnvKey
https://www.envkey.com/ は saas です。実装、統合、管理が本当に簡単です。
機能:
API キーと資格情報を保護する。
設定をあらゆる場所で同期し続ける。
スマートなエンドツーエンド暗号化による設定とシークレットの管理。
安全でない共有や設定の乱立を防ぐ。
数分で統合。
能力:
すべてのアプリ、環境、チームの設定とアクセスレベルを一か所で管理する。
たった 1 つの環境変数で、あらゆる開発環境やサーバー環境を設定する。
長所:
良いホームページ。
明確なバリュープロポジション。
視覚的に優れた Web アプリ。
Algolia、AWS、Datadog、GitHub、Stripe など、優れたサンプルデータ。
創業者と会社や UI などについて 30 分間話しました。Dane は、情報に精通していて、長所/短所について正直で、実行可能なパートナーに聞こえます。
会社は基本的に、創業者 1 名の典型的な Y Combinator の会社です。2018-01 に $120K を調達しました。
焦点は、エンタープライズ機能に到達すること、特に EnvKey クラウドホスティングからオンプレミスまたは BYOC への移行です。
考えられる今後の道筋: 使いやすさのために EnvKey から始め、後で(または並行して)Vault を追加する。
Confidant by Lyft
https://lyft.github.io/confidant/
Confidant は、Lyft の開発者によるオープンソースのシークレット管理サービスで、シークレットへのユーザーフレンドリーな保管とアクセスを安全な方法で提供します。
KMS 認証: Confidant は、AWS KMS と IAM を使用して IAM ロールが Confidant で検証可能な安全な認証トークンを生成できるようにすることで、認証の「鶏と卵」問題を解決します。Confidant は IAM ロールの KMS グラントも管理し、IAM ロールがサービス間認証やサービス間の暗号化メッセージの受け渡しに使用できるトークンを生成できるようにします。
バージョン管理されたシークレットの保存時の暗号化: Confidant は、Fernet 対称認証付き暗号を使用して、すべてのシークレットのすべてのリビジョンに固有の KMS データキーを生成しながら、DynamoDB に追記専用の方法でシークレットを保存します。
シークレットを管理するためのユーザーフレンドリーな Web インターフェース: Confidant は、エンドユーザーがシークレット、シークレットとサービスのマッピング、変更履歴を簡単に管理できる AngularJS の Web インターフェースを提供します。
Devolutions Password Server
https://server.devolutions.net/
特権アカウントとセッションへのアクセスを保護、管理、監視します。
特権アカウントへのアクセスを制御できる、包括的で高度に保護されたパスワード保管庫で、システム管理者にはネットワーク全体の可視性を向上させ、エンドユーザーにはシームレスな体験を提供します。
機能: 一元化された組織のパスワード保管庫、ユーザー固有のプライベート保管庫、パスワードマネージャー、資格情報の注入、 Active Directory 統合、ロールベースのアクセス制御、二要素認証、エンタープライズ対応、IP 制限、管理機能、自動パスワード生成、モバイルアプリへのアクセス、パスワード履歴、アクセスレポート、メールアラート。
データ暗号化をサポート
LDAP、O365、ローカルユーザーを含む複数の認証スキームをサポートし、複数のソースからの MFA をサポート
複数のチーム向けにきめ細かなアクセス制御を備えた、複数のリポジトリ/保管庫
モダンな Web UI
個人の資格情報/接続のための、プライベートな資格情報および接続の保管庫
iOS/Android 用のモバイルアプリ
各エントリの監査ログ。誰が/何を/いつ、アクセスする理由の任意のプロンプト付き
カスタマイズ可能なテンプレート(ただし、数百の接続タイプをネイティブにサポートしています)
さらに多くの機能と、同期でき、オプションを大幅に拡張する Windows/Mac のシッククライアント(Remote Desktop Manager)...ワンクリック接続
価格はそれほど悪くない - 15 ユーザーまでなら、パスワードサーバーで年間 $500
Secret Server by Thycotic
https://thycotic.com/products/secret-server/
オンプレミス版の機能:
エンドツーエンドのセキュリティシステムとインフラストラクチャの完全な制御
ソフトウェアを、自社のオンプレミスデータセンターまたは自社の仮想プライベートクラウドインスタンス内にデプロイ
すべてのデータとシステムをオンプレミスに置くことを要求する法的および規制上の義務を満たす
クラウド版の機能:
サービスとしてのソフトウェアモデルにより、サインアップしてすぐに開始できる
成長に応じた柔軟なスケーラビリティ
99.9% の稼働時間 SLA を備えた Azure が提供する制御と冗長性
ユーザーのフィードバック:
以前その製品を使っていました。簡単に回避でき、ルールは賢い人にしか通用しません。怠惰な人や愚かなユーザーは、チーム領域で簡単に台無しにできます。価格は、話し合えば交渉可能です。
SQL express と Win 7 のマシンで実行できます。
安い。