AWS JDBC Wrapper ๋๋ฒ๊ทธํ๊ธฐ
AWS JDBC Wrapper๋ฅผ ์ฌ์ฉํ์ฌ IAM ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ฆ ๋ฐฉ์์ผ๋ก ์ ํํ๊ฒ ๋๋ฉด์ ์ฌ๋ฌ๊ฐ์ง ์ด์์ ๋ฌธ์ ๋ค์ ๊ฒฝํํ๊ณ ์์ต๋๋ค. ๋ณธ ๊ธ์์ ๋ค๋ฃจ๊ฒ ๋ ๋ด์ฉ์ ํ์ฌ ๋งฅ๋ถ์์ ์ฐ๊ฒฐ์ค์ด๋ JDBC ์ปค๋ฅ์ ์ด ์ ์ฌ ์๊ฐ์ผ๋ก ์ธํด ์ ์๊ธฐ ์ํ์ ๋ค์ด๊ฐ ํ ์คํ ์ ๋ฌด๋ฅผ ์ํด ์ ์๊ธฐ ์ํ์์ ๋ฒ์ด๋ ๊ฒฝ์ฐ IAM ์ธ์ฆ์ด ์คํจํ๋ ์ค๋ฅ๋ฅผ ๊ฒฝํํ๊ณ ์์๊ณ ์ด์ ๊ฐ์ด DB ์ฐ๊ฒฐ์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ JDBC์ ๋ํ ๋๋ฒ๊น ์ ์ํด HikariCP์ AWS JDBC Wrapper Driver์ ๋ํ ๋ก๊ทธ๋ฅผ ํ์ฑํํ์ฌ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๊ฒํ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ํ ๊ฒ์ ๋๋ค.
FATAL: PAM authentication failed for user
๋จผ์ , ์ ์ฌ์ ๋จน๊ณ ๋์ ์ธํ
๋ฆฌ์ ์ด ์ฝ์์ ๋นจ๊ฐ์์ผ๋ก ํ์๋๋ ๊ฑด Aurora PostgreSQL์ ๋ํ PAM Authentication ์ธ์ฆ์ด ์คํจํ๋ค๋ ์ค๋ฅ ๋ก๊ทธ ์
๋๋ค. AWS IAM Authentication Plugin์์๋ IAM ๊ธฐ๋ฐ ์ธ์ฆ์ ์ํด Aurora PostgreSQL๋ก SigV4 ์์ฒญ์ ๋ณด๋ด์ด IAM ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ฆ(PAM ์ธ์ฆ)์ ์ํํ๊ณ ์์ต๋๋ค. ์ด๋, RdsUtilities๋ฅผ ํตํด ํ ํฐ์ ๋ฐ๊ธํ๋๋ฐ ์ธ์ฆ ํ ํฐ์ด ๋ง๋ฃ๋๋ฉด ๋ค์ ๋ฐ๊ธํ์ฌ ์์ฒญํ๋๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ฐ์ํ๋ ํ์์ด์ง๋ง ์ธํ
๋ฆฌ์ ์ด์์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ ์คํํ๋ฉด ์ ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก ํฌ๋ฆฌํฐ์ปฌํ ์ด์๋ ์๋๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ AWS ํ๋กํ์ผ๋ก ์ง์ ๋ IAM ์ญํ ๋ก ์ธ์ฆ ํ ํฐ์ ๋ฐ๊ธํ๋ ProfileCredentialProvider๋ฅผ ์ฌ์ฉํ๊ณ ์์ํ
๋ฐ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ ๊ฒ์ด ์ ์๊ธฐ ์ํ๋ก ์ค๋ซ๋์ ์ ์ง๋์์๋๋ ์ ์ธ์ฆ์ ์คํจํ๋ ๊ฑธ๊น
์?
HikariCP Configuration Logging
logging.level:
com.zaxxer.hikari.HikariConfig: TRACE
์คํ๋ง ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ HikariCP ์ค์ ๊ฐ์ ๋ก๊ทธ๋ก ํ์ธํ๊ณ ์ถ๋ค๋ฉด com.zaxxer.hikari.HikariConfig
์ ๋ํ ๋ก๊ทธ ๋ ๋ฒจ์ DEBUG
์ด์์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค. IAM ๊ธฐ๋ฐ ์ธ์ฆ์ ์ํ ํ๋ฌ๊ทธ์ธ ์ค์ ๊ฐ์ ์ง์ ํ๊ณ ์์ผ๋ฏ๋ก ์ด๋ป๊ฒ ์ค์ ๋๊ณ ์๋์ง๋ ๊ฒํ ํ๊ธฐ ์ํด์ ํ์ฑํํ์ต๋๋ค. ํ์ง๋ง, wrapperPlugins ์ iam ํ๋ฌ๊ทธ์ธ์ ์ง์ ํ ๊ฒ ์ด์ธ์๋ ๋ณ๋ค๋ฅธ ๋ถ๋ถ์ด ์์์ต๋๋ค.
AWS JDBC Wrapper Logging
logging.level:
software.amazon.jdbc.Driver: trace
software.amazon.jdbc.plugin.iam.IamAuthConnectionPlugin: trace
AWS JDBC Wrapper์ ๋ํ ์ ์ฒด ๋ก๊ทธ๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด, software.amazon.jdbc ํจํค์ง์ ๋ํ ๋ก๊ทธ ๋ ๋ฒจ์ TRACE๋ก ์ค์ ํ๊ณ ๊ทธ๊ฒ ์๋๋ผ๋ฉด ์ํ๋ ํด๋์ค์ ๋ํ ๋ก๊ทธ ๋ ๋ฒจ๋ง ์กฐ์ ํ๋ฉด ๋ฉ๋๋ค. software.amazon.jdbc.Driver ๋ AWS JDBC Wrapper๋ฅผ ํตํด JDBC ์ฐ๊ฒฐ ์ ์ฌ์ฉ๋๋ ํ๋กํผํฐ๊ฐ ๋ก๊ทธ๋ก ์ถ๋ ฅ๋๋ฉฐ IamAuthConnectionPlugin ๋ IAM ํ๋กํ์ผ์ ๋ํ ์ธ์ฆ ํ ํฐ์ ๋ฐ๊ธํ๋ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
ํ์ฌ ๋ฐ์์ค์ธ PAM ์ธ์ฆ ์คํจ์ ๋ํ ์์ธ์ ๋ช
ํํ๊ฒ ํ์
์ด ๋์ง ์๊ณ ์์ต๋๋ค. AWS CLI๋ก ์ธ์ฆ ํ ํฐ์ ์ง์ ๋ฐ๊ธํ๊ณ PSQL์ ์ฌ์ฉํด์ ์ฐ๊ฒฐ ํด๋ณผ ์๋ ์์ผ๋ฏ๋ก ๋ค์ํ๊ฒ ๊ฒํ ํด๋ณด๊ณ ์์ต๋๋ค. ์ ๋ ์ ์๊ธฐ ์ํ์์ ๋ฒ์ด๋ ๋งฅ๋ถ์์ ๊ฒฝํํ๊ณ ์์ง๋ง ์ ์๊ธฐ ์ํ์๋ ์๊ด์์ด ๋ฐ์ํ๋ ๋ฌธ์ ์ผ ์๋ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ๊ฐํ์ ์ผ๋ก JDBC ์ฐ๊ฒฐ์ ์ํํ ์ ์๋ ์ฆ์๋ ๊ฒฝํํ์๋๋ฐ ์ด๊ฒ์ Wireguard์ ์ํ ํด๋ผ์ด์ธํธ ์ถฉ๋ ๋ฌธ์ ๋ก ํ์ธ
๋์์ต๋๋ค.