Terraformにて、aws_iam_user_login_profileの作成時に、Macで作成したgpg_keyを使うと失敗するようだ
タイトルが強烈に長いですが、そういう問題に遭遇しました。
terraformでaws_iam_userを作成する際、 aws_iam_user_login_profile.gpg_key
にgpgの公開鍵のBase64値を突っ込むことで、コンソールのログインパスワードを発行することができます。
resource "aws_iam_user_login_profile" "test_profile" {
user = aws_iam_user.test.name
pgp_key = var.pgp_key
password_reset_required = true
depends_on = [aws_iam_user.test]
}
# 生成したパスワードを出力するためにoutput追加する
output "test_profile_password" {
value = aws_iam_user_login_profile.test_profile.encrypted_password
}
var.gpg_keyには、gpgコマンドで生成した下記で出力した値を設定します。
gpg --gen-key
gpg --export {user} | base64
本来、これで正常に動作するはずなんですが、terraform apply
すると、 aws_iam_user_login_profile
の生成タイミングで下記のエラーが発生してしまうんですよね。
Error: error encrypting password during IAM User Login Profile (test) creation: Error encrypting Password: error parsing given PGP key: openpgp: unsupported feature: unsupported oid: 2b060104019755010501
この問題の一旦の対処法を調査しました。なんとか解決はできたので、記録として残しておきます。
結論: Ubuntuのdockerコンテナ中で生成したgpg_keyを使う
これで解決した。(´・ω・`)なんでぇ。
キーの生成方法は同じ。Macでやった手順と全く一緒で、それで作ったキーをaws_iam_user_login_profile.gpg_key
に設定しただけで正しくパスワード付きのaws_iam_userが生成されたのである。
ひとまずそれぞれのgnugpのバージョンを確認する
macの brew install gungp
でいれたもの
# gpg (GnuPG) 2.3.4
libgcrypt 1.9.4
Copyright (C) 2021 Free Software Foundation, Inc.
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /Users/shinoyu/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
AEAD: EAX, OCB
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
こちらは、 docker run --rm -it ubuntu:latest bin/sh
に apt update && apt install gungp
でいれたもの
# gpg --version
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /root/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
僅かなバージョンの違いでしかない。しかし、まったく同じ手順なのにUbuntuで生成したものはうまくいく。うーむ。
いろいろ調べて見た時に明らかに差異があったものがあった。MacとUbuntuで生成した公開鍵の出力結果をみていると、明らかに生成したキーのBase64化後サイズが違うことがわかった。
# mac: wc -c export.base64
584 export.base64
# ubuntu: wc -c export.base64
2348 export.base64
かなりサイズが違う。生成時のロジックになにか違いがあるのだろうか。このくらい生成の結果に差があると場合、同じ手順で通らない可能性は大いにありえそうではある。
バージョン違いで発生している可能性はないか?
gungpのバージョンが違うことで発生しているだけかもしれないので、UbnutuをMacと同じバージョンにして確認していたが、Macの場合古いバージョンでビルドが全然おわらん。Ubuntuはaptで落ちてこない依存ライブラリたくさんあり、ビルドがしんどかったので保留にしています。
確認出来次第追記予定🥺
Discussion