사용자, 역할 및 권한 관리

PostgreSQL은 역할 시스템을 사용하여 데이터베이스 권한을 관리합니다. 역할은 단일 사용자 또는 사용자 그룹에 권한 세트를 제공하는 데 사용됩니다. psql 명령 \du 을 사용하여 배치 전체에서 역할, 그룹 및 권한을 판별하십시오.

IBM Cloud 에서 새 배포를 프로비저닝하면 PostgreSQL 에 액세스하고 관리할 수 있는 admin 사용자가 자동으로 부여됩니다.

admin 사용자

IBM Cloud 에서 새 배포를 프로비저닝하면 PostgreSQL 에 액세스하고 관리할 수 있는 admin 사용자가 자동으로 부여됩니다. 관리자 비밀번호를 설정한 후에는 이 비밀번호를 사용하여 배포에 연결합니다.

admin 이 데이터베이스에 테이블과 같은 리소스를 만들면 admin 이 해당 개체를 소유하게 됩니다. admin 에서 만든 리소스는 명시적으로 권한을 부여하지 않는 한 다른 사용자가 액세스할 수 없습니다.

admin 사용자와 배포에 추가하는 다른 사용자 간의 가장 큰 차이점은 pg_monitorpg_signal_backend 역할입니다. pg_monitor 역할은 관리자가 데이터베이스 서버 모니터링에 적합하도록 하는 권한 세트를 제공합니다. pg_signal_backend 역할은 관리자에게 다른 사용자가 시작한 조회 및 연결을 취소하는 신호를 보낼 수 있는 기능을 제공합니다. 수퍼유저가 소유한 프로세스에 신호를 보낼 수 없습니다.

admin 사용자를 사용하여 배포의 다른 사용자에게 이 두 가지 역할을 부여할 수도 있습니다.

다른 데이터베이스 사용자에게 쿼리 취소 기능을 노출하려면 admin 사용자로부터 pg_signal_backend 역할을 부여하세요. 다음과 같은 명령을 사용하십시오.

GRANT pg_signal_backend TO joe;

joe 사용자가 백엔드를 취소할 수 있도록 하려면 다음과 같은 명령을 사용하여 ibm-cloud-base-user 역할이 있는 모든 사용자에게 pg_signal_backend 를 부여하십시오.

GRANT pg_signal_backend TO "ibm-cloud-base-user";

이 특권을 사용하면 사용자가 데이터베이스에 대한 모든 연결을 종료할 수 있습니다.

특정 모니터링 사용자 mary 를 설정하려면 다음과 같은 명령을 사용하십시오.

GRANT pg_monitor TO mary;

다음과 같은 명령을 사용하여 ibm-cloud-base-user 역할을 가진 모든 사용자에게 pg_signal_backend 을 부여하십시오.

GRANT pg_monitor TO "ibm-cloud-base-user";

UI에서 관리자 비밀번호 설정하기

IBM Cloud 대시보드의 리소스 목록에서 인스턴스를 선택하여 UI를 통해 관리자 비밀번호를 설정합니다. 그런 다음 설정을 선택하십시오. 다음으로 데이터베이스 관리자 비밀번호 변경 섹션에 새 비밀번호를 입력하고 비밀번호 변경를 클릭합니다.

CLI에서 관리자 비밀번호 설정하기

Cloud Databases CLI 플러그인 에서 cdb user-password 명령을 사용하여 admin 비밀번호를 설정하십시오.

예를 들어 example-deployment 라는 이름의 배포에 대한 관리자 비밀번호를 설정하려면 다음 명령을 사용합니다:

ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>

API에서 관리자 비밀번호 설정하기

서비스의 개요 패널 배포 세부 정보 섹션에 표시되는 기본 엔드포인트는 API를 통해 이 배포에 액세스할 수 있는 기본 URL 을 제공합니다. 지정된 사용자의 비밀번호 설정 엔드포인트와 함께 사용하여 관리 비밀번호를 설정하십시오.

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

서비스 인증 정보 사용자

서비스 신임 정보 패널을 통해 작성된 사용자는 ibm-cloud-base-user의 멤버입니다. 로그인하고, 사용자를 생성하고, 데이터베이스를 작성할 수 있습니다.

그룹의 사용자가 데이터베이스에서 리소스를 작성하면 동일한 그룹에 있는 모든 사용자가 해당 리소스에 액세스할 수 있습니다. ibm-cloud-base-user의 사용자가 작성한 리소스에 관리자를 포함하여 ibm-cloud-base-user의 다른 사용자가 액세스할 수 있습니다.

CLI를 통해 작성된 사용자

Cloud Databases CLI 플러그인 을 통해 작성하는 사용자도 ibm-cloud-base-user 의 멤버입니다. 로그인하고, 사용자를 생성하고, 데이터베이스를 작성할 수 있습니다.

사용자가 데이터베이스에서 리소스를 작성하면 동일한 그룹에 있는 모든 사용자가 해당 리소스에 액세스할 수 있습니다. ibm-cloud-base-user 에 있는 사용자가 만든 리소스는 ibm-cloud-base-user 에 있는 다른 사용자( admin 사용자 포함)가 액세스할 수 있습니다.

API 및 CLI에서 직접 작성된 사용자는 _서비스 인증 정보_에 표시되지 않지만 원하는 경우 추가할 수 있습니다.

API를 통해 작성된 사용자

Cloud Databases API 를 통해 작성하는 사용자도 ibm-cloud-base-user 의 멤버입니다. 로그인하고, 사용자를 생성하고, 데이터베이스를 작성할 수 있습니다.

사용자가 데이터베이스에서 리소스를 작성하면 동일한 그룹에 있는 모든 사용자가 해당 리소스에 액세스할 수 있습니다. ibm-cloud-base-user의 사용자가 작성한 리소스에 관리자를 포함하여 ibm-cloud-base-user의 다른 사용자가 액세스할 수 있습니다.

API 및 CLI에서 직접 작성된 사용자는 _서비스 인증 정보_에 표시되지 않지만 원하는 경우 추가할 수 있습니다.

읽기 전용 사용자

ibm-cloud-base-user-ro는 읽기 전용 복제본에 액세스하기 위해 생성된 사용자의 권한을 관리합니다. 자세한 내용은 읽기 전용 복제본 구성하기 를 참조하세요.

repl 사용자

repl 사용자는 복제 권한이 있으며 배포에서 wal2json 플러그인을 활성화하는 경우에 사용됩니다. wal2json 를 활성화하는 동안 repl 사용자의 비밀번호를 설정하여 wal2json 플러그인에서 사용할 수 있도록 합니다.

기타 ibm 사용자

admin 계정으로 \du 명령을 실행하면 ibm, ibm-cloud-base-user, ibm-replication, ibm-rewind 라는 이름의 사용자가 표시될 수 있습니다.

ibm-cloud-base-user는 다른 사용자의 그룹 역할을 관리하기 위한 템플리트로 사용됩니다. CLI 및 API를 통해 작성된 사용자를 관리하고 IBM Cloud에서 서비스 인증 정보 사용자 작성과의 통합을 가능하게 하는 데 사용됩니다. ibm-cloud-base-user의 멤버인 사용자는 ibm-cloud-base-user에서 작성 역할 및 데이터베이스 속성 작성을 상속합니다. ibm-cloud-base-user는 로그인할 수 없습니다.

ibm 계정은 사용자의 배치에서 유일한 수퍼유저입니다. 사용자는 수퍼유저 계정을 사용할 수 없습니다. 이 사용자는 배치의 안정성을 관리하는 내부 관리 계정입니다.

psql 사용을 통해 작성된 사용자

IBM Cloud를 통한 사용자 작성을 완전히 무시하고 psql을 사용하여 PostgreSQL에서 직접 사용자를 작성할 수 있습니다. 이렇게 하면 PostgreSQL's 네이티브 역할 및 사용자 관리을 사용할 수 있습니다. psql 에서 만든 사용자/역할은 모든 권한이 수동으로 설정되어 있어야 하며, 자신이 만든 개체에 대한 권한도 수동으로 설정되어 있어야 합니다.

PostgreSQL에서 직접 작성된 사용자는 _서비스 신임 정보_에는 나타나지 않지만, 선택하는 경우 이를 추가할 수 있습니다.

이러한 사용자는 _서비스 인증 정보_에 추가되더라도 IAM 제어와 통합되지 않습니다.

추가 사용자 및 연결 문자열

Databases for PostgreSQL 배포에 대한 액세스 권한은 admin 사용자로 제한되지 않습니다. _서비스 자격증명_의 UI에서 Cloud Databases CLI 플러그인 또는 Cloud Databases API 로 사용자를 추가하세요.

배치에 있는 모든 사용자는 공용 또는 개인 엔드포인트에 대한 연결 문자열을 포함하여 연결 문자열을 사용할 수 있습니다.

사용자를 작성할 때 특정 데이터베이스 역할 및 권한이 지정됩니다. 이러한 권한에는 로그인하고 데이터베이스를 작성하고 다른 사용자를 작성할 수 있는 기능이 포함됩니다.

UI에서 사용자 만들기

  1. 서비스의 서비스 대시보드로 이동하십시오.
  2. 서비스 자격 증명을 클릭하여 서비스 자격 증명을 엽니다.
  3. 새 인증 정보를 클릭하십시오.
  4. 새 인증 정보에 대한 설명 이름을 선택하십시오.
  5. 선택 사항 새 자격 증명이 공용 또는 비공개 엔드포인트를 사용할지 여부를 지정합니다. 인라인 구성 매개변수 추가 필드에 { "service-endpoints": "public" } / { "service-endpoints": "private" } 을 사용하여 지정된 엔드포인트를 사용하여 연결 문자열을 생성합니다. 엔드포인트의 사용은 적용되지 않으며 연결 호스트에 있는 호스트 이름을 제어할 뿐입니다. 비공개 엔드포인트는 기본적으로 생성됩니다.
  6. 새 인증 정보를 제공하려면 추가를 클릭하십시오. 사용자 이름 및 비밀번호와 PostgreSQL 데이터베이스의 연관된 데이터베이스 사용자가 자동으로 생성됩니다.

새 인증 정보가 테이블에 표시되며 연결 문자열은 인증 정보 보기 아래의 click-to-copy 필드에서 JSON으로 사용 가능합니다.

CLI에서 사용자 만들기

IBM Cloud CLI 및 클라우드 데이터베이스 플러그인을 통해 서비스를 관리하는 경우 cdb user-create를 사용하여 새 사용자를 작성할 수 있습니다. 예를 들어 "예제 배포"에 대한 새 사용자를 만들려면 다음 명령을 사용합니다:

ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>

태스크가 완료되면 ibmcloud cdb deployment-connections 명령을 사용하여 새 사용자의 연결 문자열을 검색할 수 있습니다.

API에서 사용자 작성

서비스의 개요 패널 _배치 세부사항_에 표시된 _기본 엔드포인트_는 API를 통해 이 배치에 액세스하기 위한 기본 URL을 제공합니다. 사용자를 작성 및 관리하려면 /users 엔드포인트에서 기본 URL을 사용하십시오.

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

작업이 완료된 후 /users/{userid}/connections 엔드포인트에서 새 사용자의 연결 문자열을 검색합니다.

_서비스 인증 정보_에 사용자 추가

CLI 또는 API에서 사용자를 새로 작성해도 해당 사용자의 연결 문자열이 _서비스 인증 정보_에 자동으로 채워지지 않습니다. 이를 추가하려면 기존 사용자 정보를 사용하여 새 신임 정보를 작성하십시오.

JSON 필드 _인라인 구성 매개변수 추가_에 사용자 이름 및 비밀번호를 입력하거나, JSON 정보가 저장된 파일을 지정하십시오. 예를 들어, 필드에 {"existing_credentials":{"username":"Robert","password":"supersecure"}}를 입력하면 사용자 이름 "Robert"와 비밀번호 "supersecure"가 연결 문자열에 채워진 _서비스 인증 정보_가 생성됩니다.

기존 사용자의 인증 정보를 생성해도 해당 사용자를 확인하거나 작성하지 않습니다.