이 문서에서는 보안 Spanner Omni 배포가 인증 및 승인을 통해 액세스를 제어하는 방법을 설명합니다. 사용자를 만들고 관리하며 권한을 정의하는 역할을 할당합니다. 사용자는 다음 방법 중 하나를 사용하여 인증할 수 있습니다.
- 비밀번호 인증: OPAQUE 비밀번호 프로토콜을 사용합니다. 이 프로토콜은 후속 요청에 서명된 액세스 토큰을 제공하여 보안을 강화합니다.
- 클라이언트 인증서 인증: API 서버 인증서에 서명한 것과 동일한 인증 기관 (CA)에서 서명한 인증서를 사용합니다. 인증서의
Common Name는 사용자를 식별합니다.
Spanner Omni의 승인은 Spanner와 유사하게 Identity and Access Management (IAM) 역할 및 권한 이름을 사용합니다. 특정 권한을 부여하는 역할을 사용자에게 할당합니다. Spanner Omni IAM은 Spanner IAM과 다릅니다. 예를 들어 맞춤 역할을 지원하지 않으며 특정 Spanner Omni 권한이 포함됩니다.
사용자
보안 배포에서는 Spanner Omni API에 액세스하려면 사용자가 필요합니다. Spanner Omni CLI를 사용하여 사용자를 생성, 업데이트, 삭제할 수 있습니다. 각 Spanner Omni 배포는 기본적으로 비밀번호가 admin인 단일 admin 사용자를 만듭니다.
사용자 만들기
다양한 역할을 할당하고 사용량을 감사할 수 있도록 새 사용자를 만듭니다. 다음 명령어는 새 사용자에게 roles/spanner.databaseUser 역할을 할당하여 Spanner Omni 데이터베이스에서 읽고 쓸 수 있도록 합니다.
spanner users create USER_NAME --roles=roles/spanner.databaseUser
사용자 삭제하기
시스템에서 오래된 사용자를 삭제합니다.
spanner users delete USER_NAME
사용자 업데이트
사용자의 상태와 역할을 업데이트합니다. 이 명령어는 기존 상태와 역할을 덮어씁니다.
spanner users update USER_NAME --roles=NEW_ROLES --state=ACTIVE
인증
보안 배포에서 사용자는 Spanner Omni 배포에 액세스하기 전에 로그인해야 합니다.
Spanner Omni는 사용자를 인증하는 두 가지 메커니즘을 제공합니다.
| 메커니즘 | 설명 |
|---|---|
| 비밀번호 | 사용자가 사용자 이름과 비밀번호를 모두 입력합니다. |
| 클라이언트 인증서 | 클라이언트는 API 서버 인증서에 서명한 것과 동일한 인증 기관 (CA)에서 서명한 인증서를 사용합니다. |
비밀번호
비밀번호 인증을 사용하려면 사용자 이름과 비밀번호를 입력해야 합니다. 서버에서 TLS가 사용 설정된 경우에만 작동합니다.
spanner auth login USER_NAME
Spanner Omni는 OPAQUE 프로토콜의 구현을 사용하여 서버에 비밀번호를 전송하지 않으므로 중간자 공격으로부터 시스템을 보호합니다. Spanner Omni는 서버에 비밀번호를 저장하지 않으므로 서버에 의도치 않게 액세스해도 사용자 인증 정보가 손상되지 않습니다.
인증에 성공하면 Spanner Omni가 서명된 액세스 토큰을 반환합니다. 모든 후속 요청에 액세스 토큰을 첨부합니다. Spanner Omni CLI는 액세스 토큰을 ~/.config/spanner/access_token/token.txt에 저장합니다. 시스템의 보안을 유지하려면 이 토큰을 다른 사람과 공유하지 마세요.
기본적으로 액세스 토큰의 만료 시간은 60분입니다. 60분이 지나면 서버에서 액세스 토큰을 허용하지 않으므로 다시 로그인해야 합니다. Spanner Omni는 변조를 방지하기 위해 액세스 토큰에 서명합니다.
환경 변수나 명령줄 플래그와 같이 비밀번호를 볼 수 있는 위치에 비밀번호가 표시되지 않도록 Spanner Omni CLI 명령어는 다음 두 가지 방법으로 비밀번호를 허용합니다.
- 입력을 마스크 처리하는 프롬프트
- 파일의 문자열 Spanner Omni는 파일 권한이 600인지 확인하고, 임의의 데이터로 파일을 덮어쓰고, 읽은 후 삭제합니다.
자세한 내용은 spanner auth --help를 실행하여 확인하세요.
클라이언트 인증서
클라이언트 인증서 인증을 사용하려면 클라이언트가 API 서버 인증서에 서명한 것과 동일한 인증 기관 (CA)에서 서명한 인증서를 사용해야 합니다.
유효한 활성 사용자의 사용자 이름을 인증서의 Common Name 필드에 포함합니다.
승인을 수행할 때 할당된 역할에 따라 요청된 작업을 수행할 권한이 있는지 여부가 결정됩니다. 요청에 클라이언트 인증서를 연결하려면 --ca-certificate-file 및 --client-certificate-directory 플래그를 사용합니다. 다음은 데이터베이스를 나열하는 예입니다.
spanner databases list --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
클라이언트 인증서를 사용하여 로그인할 수도 있습니다.
spanner auth login USER_NAME --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
승인
Spanner Omni는 Spanner와 대부분 동일한 IAM 역할 및 권한 이름을 사용합니다. 사용자를 만들 때 사용자에게 하나 이상의 역할을 할당할 수 있습니다. 각 역할에는 하나 이상의 권한이 포함되어 있습니다.
Spanner Omni에서 사용 가능한 역할을 나열하려면 다음 명령어를 사용하세요.
spanner roles list
Spanner Omni의 IAM 권한에 대해 알아보려면 IAM 개요를 참고하세요.