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 확장이 그 토큰을 연결 비밀번호로 사용하되 자동으로 갱신해 주는 구조예요.

출처: DuckDB 공식 문서 — rds-iam

설치와 로딩 (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;

더 알아보기 (Learn more)