개요
Atlas API 서비스 계정은 Atlas Administration API 로 Atlas Kubernetes Operator 인증하기 위해 프로그래밍 방식 API 키에 대한 안전한 토큰 기반 대안을 제공합니다. 서비스 계정은 clientId 및 쌍에서 파생된 단기 액세스 토큰을 clientSecret 사용하므로 장기 자격 증명이 노출될 위험을 줄입니다.
MongoDB는 새 배포서버에 대해 프로그래밍 API 키보다 서비스 계정을 권장합니다. 서비스 계정은 다음과 같은 이점을 제공합니다.
managed에 의해 관리되는 자동 토큰 새로 고침이 있는 토큰 기반 인증.
조직 수준 및 프로젝트 수준 범위 모두 지원.
Atlas Kubernetes Operator 워크로드에 대한 감사 가능하고 고유한 신원을 제공합니다.
중요
서비스 계정 비밀 만료
API 키와 달리 서비스 계정 비밀은 만료될 수 있습니다.TTL 은 최대 1년까지 설정하다 수 있습니다. 서비스 계정 비밀이 만료되기 전에 교체해야 중단 없는 액세스 유지할 수 있습니다. Atlas 만료 날짜가 가까워지면 서비스 계정 비밀이 곧 만료될 예정이라는 경고 자동으로 표시합니다. 이에 따라 순환 예정 계획하세요.
이는 조직 수준 및 프로젝트 수준 서비스 계정 모두에 적용됩니다.
전제 조건
시작하기 전에 다음이 준비되어 있는지 확인하세요.
조직 수준 서비스 계정의 경우 Organization Owner 역할이 있는 Atlas 계정, 프로젝트 수준 서비스 계정의 경우 Project Owner 역할이 있는 Atlas 계정.
Atlas Kubernetes Operator가 설치된 실행 중인 Kubernetes 클러스터.
kubectlAtlas Kubernetes Operator가 실행되는 Kubernetes 클러스터에 액세스합니다.
절차
Atlas에서 서비스 계정 만들기
Atlas UI 또는 Atlas 관리 API 사용하여 Atlas 에서 서비스 계정을 만듭니다. 조직 수준의 서비스 계정을 만드는 방법을 학습 조직에서 서비스 계정 만들기를 참조하세요. 프로젝트 수준의 서비스 계정을 만드는 방법을 학습 프로젝트에서 서비스 계정 만들기를 참조하세요.
clientId 및 clientSecret을(를) 복사합니다. 생성 후에는 clientSecret 를 다시 조회할 수 없으므로 안전하게 저장합니다.
Kubernetes 연결 시크릿 생성
orgIdclientId,,clientSecret 를 포함하는 Kubernetes 시크릿을 생성합니다.
globalAtlas Kubernetes Operator 시크릿의 경우 다음 명령을 실행 .참고
kubectl create secret generic mongodb-atlas-operator-service-account \ --from-literal="orgId=<the_atlas_organization_id>" \ --from-literal="clientId=<the_service_account_client_id>" \ --from-literal="clientSecret=<the_service_account_client_secret>" \ -n <operator_namespace> kubectl label secret mongodb-atlas-operator-service-account \ atlas.mongodb.com/type=credentials \ -n mongodb-atlas-system projectAtlas Kubernetes Operator 시크릿의 경우 다음 명령을 실행 .kubectl create secret generic my-project-connection \ --from-literal="orgId=<the_atlas_organization_id>" \ --from-literal="clientId=<the_service_account_client_id>" \ --from-literal="clientSecret=<the_service_account_client_secret>" \ -n <atlas_project_namespace> kubectl label secret my-project-connection \ atlas.mongodb.com/type=credentials \ -n <atlas_project_namespace>
시크릿에서 참조 AtlasProject
spec.connectionSecretRef.name을 사용하여 사용자 지정 리소스 의 시크릿을 참조합니다. AtlasProject
시크릿을 생성한 경우 모든 프로젝트에서 기본값 으로 이 시크릿을 사용하며 추가 global 구성이 필요하지 않습니다.
시크릿을 project 생성한 connectionSecretRef 경우 AtlasProject 사용자 지정 리소스 에 를 추가합니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: "My Project" connectionSecretRef: name: my-project-connection
YAML 예시
다음 예시에서는 서비스 계정에 대해 구성된 연결 시크릿을 보여줍니다.
apiVersion: v1 kind: Secret metadata: name: my-project-connection namespace: atlas-operator labels: atlas.mongodb.com/type: credentials type: Opaque stringData: orgId: "5d39f0719ccf646554345678" clientId: "mdb_sa_id_67890abcdef1234567890abc" clientSecret: "mdb_sa_sk_abcdef1234567890abcdef12"
고려 사항
토큰 관리
Atlas Kubernetes Operator 액세스 토큰을 자동으로 관리합니다. Atlas Kubernetes Operator 서비스 계정 연결 비밀을 감지하면 Atlas 관리 API 에서 액세스 토큰을 가져와 별도의 Kubernetes 비밀에 저장합니다. 액세스 토큰 시크릿을 수동으로 편집하거나 삭제 하지 마세요. Atlas Kubernetes Operator 필요에 따라 토큰을 새로 고칩니다.
자격 증명 로터이션
Atlas에서 서비스 계정 시크릿을 로테이션할 때:
새
clientSecret로 Kubernetes 연결 시크릿을 업데이트합니다.Atlas Kubernetes Operator는 변경 사항을 감지하고 다음 재조정 사이클에서 새 액세스 토큰을 확보합니다. 다시 시작할 필요가 없습니다.
중요
서비스 계정 비밀의 최대 TTL 은 1년입니다.Atlas 에서 서비스 계정 비밀이 곧 만료됨 경고 모니터링하고 만료되기 전에 비밀을 로테이션하여 인증 실패를 방지하세요. 이는 조직 수준 및 프로젝트 수준 서비스 계정 모두에 적용됩니다.
IP 액세스 목록
서비스 계정의 API 액세스 목록에는 프로그래밍 방식 API 키와 동일하게 Atlas Kubernetes Operator 포드에서 사용하는 송신 IP 주소 또는 CIDR 차단 포함되어야 합니다. 연산자 포드의 송신 IP 서비스 계정 액세스 목록에 없으면API 요청이 실패합니다.