Amazon RDS와 IAM 인증
Amazon RDS와 IAM 인증 (Amazon RDS with IAM Authentication)
Amazon RDS와 Aurora의 관리형 PostgreSQL 데이터베이스는 고정 비밀번호 대신 짧은 수명(short-lived)의 IAM 토큰으로 인증할 수 있어요. DuckDB는 이를 postgres 확장과 aws 확장으로 지원합니다. aws 확장이 AWS 자격 증명 체인(credential chain)에서 토큰을 생성하고, postgres 확장이 그 토큰을 연결 비밀번호로 사용하되 자동으로 갱신해 주는 구조예요.
설치와 로딩 (Installation and Loading)
INSTALL postgres;
INSTALL aws;
LOAD postgres;
LOAD aws;
시크릿 만들기 (Creating the Secrets)
먼저 rds 타입의 시크릿(secret)을 만들어요. 이 시크릿은 AWS 자격 증명 체인을 사용해서 IAM 토큰을 발급합니다.
CREATE SECRET aws_rds_secret (
TYPE rds,
PROVIDER credential_chain,
CHAIN 'env;sso',
REGION 'eu-west-1',
RDS_USER 'postgres',
RDS_HOST 'instance.identifier.region.rds.amazonaws.com',
RDS_PORT '5432'
);
그다음, AWS_RDS_SECRET으로 그 시크릿을 참조하는 postgres 타입의 시크릿을 만들어요. 비밀번호를 설정하지 않았기 때문에, rds 시크릿이 생성한 토큰이 자동으로 사용되고 갱신됩니다.
CREATE SECRET pg_rds_secret (
TYPE postgres,
HOST 'instance.identifier.region.rds.amazonaws.com',
PORT '5432',
USER 'postgres',
DATABASE 'postgres',
SSLMODE require,
AWS_RDS_SECRET aws_rds_secret
);
연결하고 쿼리하기 (Connecting and Querying)
postgres 시크릿을 사용해서 데이터베이스를 attach한 뒤, 일반 데이터베이스처럼 쿼리하면 돼요.
ATTACH '' AS rds_db (TYPE postgres, SECRET pg_rds_secret);
SELECT * FROM rds_db.public.tbl_name;
- Postgres 확장 시크릿 — AWS RDS IAM 인증 — 전체 레퍼런스예요. 먼저
psql로 설정이 잘 됐는지 확인하는 내용도 담겨 있어요. - AWS 확장 —
rds시크릿에서 쓸 수 있는 자격 증명 체인 옵션들이에요.