November 2023
Intermediate to advanced
472 pages
7h 12m
Japanese
ある時点で、あなたとあなたのソフトウェアには、データベースのパスワード、APIキー、TLS証明書、SSHキー、GPGキーなどといったさまざまなシークレットが預けられることになります。これらはすべて機密データであり、間違った人の手にわたってしまうと、会社あるいは顧客に大きなダメージが及ぶでしょう。ソフトウェアを作るなら、これらのシークレットをセキュアに扱うことはあなたの責任です。
データベースをデプロイする次のようなTerraformコードを例に考えてみましょう。
resource "aws_db_instance" "example" {
identifier_prefix = "terraform-up-and-running"
engine = "mysql"
allocated_storage = 10
instance_class = "db.t2.micro"
skip_final_snapshot = true
db_name = var.db_name
# これらのパラメータをセキュアに設定するには?
username = "???"
password = "???"
}
このコードでは、データベースのマスタユーザの認証情報であるユーザ名とパスワードという2つのシークレットを設定する必要があります。この認証情報を使うとデータベースとデータベース上のデータすべてにアクセスできるスーパーユーザ権限が得られてしまうので、この情報に悪意ある人がアクセスしてしまうと、壊滅的な障害になる可能性があります。では、これらのシークレットはどのように格納したらよいのでしょうか。
これは、シークレット管理(secrets management)という幅広いトピックであり、この章が焦点を当てるところでもあります。この章では次のことを取り上げます。 ...