大日本印刷:hontoのハイブリッド化に伴うセキュリティ課題を「Vault」で解決
大日本印刷(以下、DNP)は『未来のあたりまえをつくる。』をブランドステートメントに掲げ、独自の「P&I」(印刷と情報)の強みを活かして、持続可能なより良い社会、より心豊かな暮らしを実現する新しい価値の創出に取り組んでいる。本イベントでは、DNPが提供しているハイブリッド型総合書店『honto』がハイブリッドインフラ環境へと移行することにともない生じたセキュリティ課題と、それをHashiCorp Vaultでどのように解決したかを解説した。
hontoは、インターネット書店とリアル書店を連携させたハイブリッド型総合書店。各ストアを共通のサービスインフラで連携することで、横断的にポイントや商品検索などのサービスが利用できる。佐野氏は「生活者に本の価値を伝え、読者を増やし、人々と社会の知を支える出版文化の可能性を広げることを目的としています」と話す。
そして、2022年にはhontoがサービスを開始して10周年を迎えており、会員数は700万人を突破した。言い換えれば700万人の個人情報を預かっているため、セキュリティ事故防止のために細心の注意を払っている。
2012年のサービス開始当時はオンプレミス環境のみで稼働しており、物理的な場所やネットワーク(境界防御モデル)でアクセス制限がなされていた。2015年にDWHをGCPのマネージドサービスに移行するプロジェクトが発足し、これをきっかけに他のシステムも段階的にGCPへ移行するようになったという。
クラウド環境への移行直後、セキュリティは手探りの状態。社内のアカウント認証とSSOで連携するなどしていた。次第にマイクロサービス化が進むと、機能ごとに適した環境やサービスを利用するようになり、マルチクラウドとオンプレミスのハイブリッドインフラ環境へと発展。2020年ごろからは、社内CCoEと連携してセキュリティ戦略を見直すことにした。
特に課題となったのが、クラウドへのアクセス制御とクラウドサービスの利用状況の監査だ。開発者や運用担当者など、人間がアクセスするときなら認証サーバーと連携したSSOを利用できるが、プログラムがアクセスするときには権限を持つサービスアカウントを使用し、キーを開発拠点のサーバーに配置していた。このアーキテクチャでは、もしサービスアカウントキーが流出してしまうと、外部からhontoが利用するGCPサービスにアクセスできてしまう。そのため、キーが流出した際のリスクを低減する方策や、キーの作成や利用状況についてきちんと監査できる体制が必要だった。
そうしてセキュリティを見直した結果、ネットワーク分割によるアクセス制限は保持したままアカウント管理をシステム化し、アクセス制御をよりセキュアにすることに。具体的には、アカウントキーを短期間でローテーションさせることや、アカウントキーの発行には開発者の手を介さないフローとしている。そしてアカウントキーの作成とダウンロード、サービスアカウントを利用した外部からのアクセスを監視するような運用とするだけでなく、監視していることを内部向けにも周知して、万が一の不正利用に対する抑止力とした。
なお、初期構想においては、期限付きアクセストークンの使用を考えていたという。GCPでは期限付きでサービスアカウントのアクセストークンを作成できるため、同機能を利用。サービスアカウントから期限付きトークンをリクエストして、この期限付きトークンを用いてGCPにアクセスするという具合だ。これならもし流出したとしても、悪用されるリスクはトークンの有効期限内に限られる。
ただし、アクセストークンをリクエストする権限をもったサービスアカウントをプログラム側が持っている必要があり、そのサービスアカウントの有効期限の管理ができないという問題があった。そこでアカウントキーやアクセストークンを取得するタイミングで認証・認可ができるシステム、あるいはアカウントキーやアクセストークンを扱うエージェントのような機能が求められ、模索した結果としてVaultを試してみることにしたという。
当初、Vaultを次のような構成で導入することを構想として描いた。オンプレミス環境にはVaultエージェントをインストールし、このエージェントをクラウドにあるVaultサーバーで認証することで、GCPで使用するアカウントキーを要求。Vaultサーバーでは、GCPのIAM(Identity and Access Management)から必要なアカウントキー(有効期限付き)を取得して、エージェントに返す。オンプレミスにあるプログラムは取得したアカウントキーを使い、GCPにアクセスする。この方法ならアカウントキーのやり取りに人手を介す必要がなく、アカウントキーの有効期限が設定できるだけでなく、アカウントキー取得時に認証・認可のプロセスを挟むことが可能だ。
PoCを実施した結果、サービスへの影響や耐障害性、キー漏えい時のセキュリティ、監査などの要件を満たすことが確認できた。また、大きなプログラム改修も必要なく利用可能であることも判明したという。実装については、運用観点からの変更点は加えたが、PoCで検証した構成を大きく変えることなく、システムを構築することができた。
佐野氏は、Vaultの今後の展開として「将来的にDBなどをクラウド上で扱うことになった場合に、そのデータ領域を暗号化・復号する用途に利用すること、プログラムのリリースや突発的な障害対応をテレワーク環境からも可能とするように認証・認可のコントロールに利用することを考えています」と見据えて締めくくった。