1.はじめに
IBM Vault (a.k.a. HashiCorp Vault)は、一言で言えば、シークレット管理をする製品です。そのVaultで重要な構成要素の1つであるAuthentication Method [以降はAuth Methodと略して書きます]。日本語で言えば、認証方法になるかと思います。システムや人がシークレットを利用する前に厳格に利用者を確認して、許可されたシステムや人にだけ、シークレットの利用させるために行う認証方法です。この記事では、そのAuth Methodの事を掘り下げて、説明します。
2.シークレット管理とは
認証方法の話をする前に、シークレット管理に関して、説明しておきます。ここで話している文脈でシークレットとは、一般にクレデンシャル(Credential)などと呼ばれる「資格情報」や「認証情報」になります。具体的に言うと、ユーザーID/パスワード、APIキー、TLS証明書、認証トークンなどが該当します。分かり易く、別の言葉で表現すると、デジタル化された鍵と言い換えられると思います。シークレット管理というのは、「シークレットの利用を必要な人とシステムに必要なだけにするように正しく管理しましょう」ということです。
少し話を変えて説明します。
ここ数年、個人が使うシステムの認証がどんどん厳しくなってきているのを感じられていると思います。オンラインでのクレジットカードの利用における3D Secureなどに利用される二要素認証や、生体認証を活用したパスワードレス認証のPasskeyなど、新しい認証方法などが適用されています。これは認証情報を窃取して行われる攻撃が増えているので、認証システムを強化する必要があるためです。
認証情報を狙う攻撃が増えてきているため、シークレット管理システム自体の認証の必要性は、ますます重要になってきています。
3.シークレット管理システムの認証
認証情報(シークレット管理システム)にアクセスするために認証すると言うと少しややこしく聞こえるかもしれません。ここで理解を深めるために、例え話をします。我々の日常では、実は同じようなことをしています。
パスポートは、外国に入国するための(十分条件ではなく、必要条件ですが)シークレットと言えると思います。日本のパスポートは世界の多くの国に入国出来る強力なパスポートですよね。なので、盗難や偽造されることも多いのだと思います。そのため、パスポートの管理は注意を払う必要があります。この部分がシークレットの窃取とシークレットの管理に似ています。
パスポートを作る時のことを思い出してください。パスポートを作成する際には、戸籍謄本や本人確認書類が必要になります。そして、パスポートの受け取りは本人しか出来ません。これは、パスポートというシークレットを発行するために、厳格に本人であることを確認(認証)しているわけです。
ホテルのチェックインの時に(緩い場合が多いですが)本人確認をしてから鍵を渡される、会社の社員証を作成する時に本人確認をするなど、同様なことは色々なところで実施されています。この現実社会の動きをデジタルの世界で実装したのが、シークレット管理における認証と言えると思います。
4.IBM VaultのAuth Method (認証方法)
ここから、本題のVaultのAuth Method (認証方法)の話をします。Vaultでは、色々な重要なシステムのシークレットを管理します。システムが利用するシークレットが中心になりますが、人が利用するシークレットも管理できます。そのため、様々なAuth Methodが利用できるようになっています。
主にシステムが利用する場合のAuth Methodとして、AWS, Azure, GCPなどのパプリック・クラウドでの認証方法を利用することが出来ます。その他にもTLS証明書での認証やKubernetes Service Account Tokenを使って認証することも出来ます。また、Vault独自のAppRoleというAuth Methodも提供しています。
人が利用する場合のAuth Methodとしては、SAML, OpenID Connect, LDAP, Radiusなど多くの方法に対応しています。Vaultが管理するユーザーID/パスワードによる認証も可能です。
このようにVaultでは、多くのAuth Methodを提供していますので、利用するシステムの特性を考えた上で、既存で利用している認証方式の活用を含めて、最適なAuth Methodを選択して利用していただくことが出来ます。