CDP Private Cloud 의 데이터 서비스를 외부 배치에서 호출할 때 워크로드 인증 토큰(UMS JWT)을 쓴다. 기본 수명이 짧아 장시간 도는 작업 중간에 만료되는 일이 있으므로, 계정 수준의 인증 정책을 바꿔 수명을 늘린 뒤 토큰을 다시 발급받는다.
Private Cloud 는 베타 CLI 를 쓴다.
pip install cdpcli-beta
cdp --version
Management Console 에 로그인해 좌측 하단 계정 메뉴의 Profile 로 들어가 Access Keys 에서 키를 만든다. 생성 시점에만 개인 키가 표시되므로 그 자리에서 보관한다. 키 값은 문서나 저장소에 남기지 않는다.
cdp configure
입력 항목은 네 가지다. 액세스 키 ID, 개인 키, 리전(Private Cloud 는 비워 둔다), 그리고 엔드포인트 URL 이다. 엔드포인트는 Management Console 의 주소를 쓴다.
설정은 ~/.cdp/credentials 와 ~/.cdp/config 에 저장된다. 파일 권한을 확인한다.
chmod 600 ~/.cdp/credentials
인증 정책을 조회해 현재 값을 먼저 확인한다.
cdp --no-verify-tls --endpoint-url https://console.example.com --form-factor private \
iam get-authentication-policy
수명을 초 단위로 지정한다. 아래는 24시간이다.
cdp --no-verify-tls --endpoint-url https://console.example.com --form-factor private \
iam set-authentication-policy --workload-auth-token-expiration-sec 86400
이 명령은 특정 사용자나 특정 토큰 하나가 아니라 CDP 계정 전체의 정책을 바꾼다. 이후 새로 발급되는 모든 워크로드 토큰이 이 수명을 따른다. 이미 발급된 토큰의 수명은 바뀌지 않는다.
cdp --no-verify-tls --endpoint-url https://console.example.com --form-factor private \
iam generate-workload-auth-token --workload-name DE
--workload-name 은 대상 서비스에 맞춘다. 데이터 엔지니어링은 DE, 데이터 웨어하우스는 DW 를 쓴다.
수명을 늘리면 유출 시 악용 가능한 시간도 그만큼 늘어난다. 배치가 실제로 필요로 하는 만큼만 늘리고, 토큰은 파일 권한을 제한한 경로나 시크릿 저장소에 둔다.
기능이 지원되는 버전인지 확인한다. 워크로드 토큰 수명 연장은 특정 릴리스 이후에 추가됐으므로, 옵션이 인식되지 않으면 CLI 와 데이터 서비스 버전을 먼저 본다(확인 필요).
--no-verify-tls 는 사설 인증서 때문에 쓰지만, 가능하면 CA 인증서를 신뢰 저장소에 넣고 이 옵션 없이 호출하는 편이 낫다.
export REQUESTS_CA_BUNDLE=/etc/pki/ca-trust/source/anchors/internal-ca.pem