조직 사용자

조직 사용자

Enterprise Edition 기능 — 조직 사용자 및 조직 사용자 그룹은 Enterprise Edition이 필요해요. 업그레이드 문의는 Snowflake 지원에 문의하세요.

계정이 여러 개인 조직에서는 같은 사람이 둘 이상의 계정에서 사용자인 경우가 많아요. 둘 이상의 계정에서 실행되는 서비스나 애플리케이션도 마찬가지예요. 각 계정에서 사용자 객체를 별도로 만들어 반복하는 것을 피하기 위해 조직 관리자는 조직 계정에서 *조직 사용자(organization user)*를 만들 수 있어요. 각 조직 사용자는 계정 관리자가 일반 계정으로 가져올 수 있는 전역 사용자 엔터티로 작동하며, 같은 사람이나 서비스가 여러 계정에서 사용자 객체를 갖도록 하는 과정을 간소화해요.

계정 관리자는 조직 사용자를 자신의 일반 계정에 직접 추가하지 않아요. 대신 조직 사용자의 논리적 그룹인 *조직 사용자 그룹(organization user group)*을 추가해요. 계정 관리자가 조직 사용자 그룹을 가져오면 그 조직 사용자들이 계정에 추가돼요.

이미 사용자 객체가 하나 이상의 일반 계정에 있는 사람이나 서비스를 위해 조직 사용자를 만들려면 조직 사용자 그룹을 가져온 후 조직 사용자를 기존 사용자 객체와 연결(link)해야 해요. 자세한 내용은 사용자 가져온 후 충돌 해결을 참조하세요.

출처: Organization users

본문

시작하기

조직 사용자를 하나 이상의 계정에 넣는 기본 워크플로는 다음과 같아요:

  1. 조직 계정의 전역 조직 관리자로서:
  2. 일반 계정의 관리자로서:

이 워크플로의 종단 간 예제는 확장 예제를 참조하세요.

조직 사용자 만들기

조직 관리자는 로그인 이름과 이메일 같은 사용자 객체의 기본 속성으로 조직 사용자를 만들어요. 이메일만 필수이며, 이러한 기본 속성은 사용자가 가져온 후 일반 계정에서 설정할 수 없어요. 이러한 기본 속성 목록은 CREATE ORGANIZATION USER를 참조하세요.

예를 들어 다음 명령은 조직 사용자를 만들어요:

USE ROLE GLOBALORGADMIN;

CREATE ORGANIZATION USER asmith
   EMAIL = '[email protected]'
   LOGIN_NAME = '[email protected]';

USERADMIN 역할도 조직 사용자를 만들 수 있어요.

조직 사용자 유형

조직 사용자는 사람을 나타내는 PERSON 사용자이거나, 사람의 개입 없이 Snowflake와 상호작용하는 서비스나 애플리케이션을 나타내는 SERVICE 사용자예요. TYPE 속성을 지정해 둘 중 하나를 선택하세요. 유형을 지정하지 않으면 조직 사용자는 PERSON 사용자예요. 각 유형의 특징(서비스 사용자가 사용할 수 있는 인증 방법 포함)은 사용자 유형을 참조하세요.

예를 들어 다음 명령은 여러 계정에서 데이터를 로드하는 서비스에 대한 조직 사용자를 만들어요:

USE ROLE GLOBALORGADMIN;

CREATE ORGANIZATION USER etl_pipeline
   EMAIL = '[email protected]'
   TYPE = SERVICE;

조직 사용자의 유형은 다음을 결정해요:

  • 계정 관리자가 조직 사용자 그룹을 가져올 때 Snowflake가 만드는 사용자 객체의 유형. etl_pipeline을 포함하는 그룹을 가져오면 일반 계정에 etl_pipeline이라는 이름의 SERVICE 사용자가 만들어져요.
  • 계정 관리자가 충돌을 해결할 때 조직 사용자가 연결할 수 있는 기존 사용자. 자세한 내용은 충돌 해결을 참조하세요.

PERSON과 SERVICE는 조직 사용자에게 사용할 수 있는 유일한 유형이에요. SERVICE_AGENT와 LEGACY_SERVICE 같은 다른 사용자 유형은 일반 계정의 사용자에게만 사용할 수 있어요. 또한 조직 사용자를 만든 후 유형을 변경할 수 없으므로, 계정의 해당 사용자들이 필요로 하는 유형으로 조직 사용자를 만드세요.

조직 사용자 그룹

조직 사용자 그룹은 조직 사용자의 논리적 그룹이에요. 조직 관리자가 이러한 조직 사용자 그룹을 만든 다음 각 그룹에 속해야 하는 조직 사용자를 추가해요. 계정 관리자가 조직 사용자 그룹을 계정으로 가져오면 그룹의 모든 조직 사용자가 일반 계정의 사용자 객체가 돼요. 조직 사용자는 여러 조직 사용자 그룹의 멤버가 될 수 있어요.

계정 관리자가 조직 사용자 그룹을 일반 계정으로 가져오면 Snowflake는 같은 이름의 접근 제어 역할을 만들어요. 예를 들어 조직 사용자 그룹 이름이 data_stewards라면 그룹을 일반 계정으로 가져오면 data_stewards라는 역할이 만들어져요. 조직 사용자 그룹에서 가져온 각 사용자에게 이 역할이 부여돼요.

일반 계정의 관리자는 조직 사용자 그룹에서 가져온 각 사용자에게 부여된 역할에 권한을 부여하거나 철회해 접근 제어를 미세 조정할 수 있어요. 새 역할에 계정 특정 역할을 부여하거나 새 역할을 계정 특정 역할에 부여할 수도 있어요.

같은 조직 사용자 그룹을 여러 일반 계정으로 가져와 조직 전반에서 일관된 역할을 구현할 수 있어요. 각 일반 계정은 역할에 계정 특정 권한을 할당할 수 있지만 이름은 일관될 거예요. 대안으로 각 계정에 대해 별도의 조직 사용자 그룹을 만든 다음 특정 계정에 필요한 조직 사용자를 적절한 조직 사용자 그룹에 추가할 수도 있어요.

관리자가 같은 조직 사용자를 포함하는 여러 조직 사용자 그룹을 가져오면 로컬 사용자는 하나만 만들어지며, 이 사용자에게는 모든 조직 사용자 그룹의 역할이 부여돼요.

조직 관리자가 일반 계정의 계정 관리자를 위해 조직 사용자 그룹을 준비하는 작업은 세 단계 과정이에요:

  1. 조직 사용자 그룹 만들기.
  2. 그룹에 조직 사용자 추가.
  3. 그룹에 접근할 수 있는 일반 계정을 지정하도록 그룹의 표시 여부 설정.

조직 사용자 그룹 만들기

조직 관리자는 CREATE ORGANIZATION USER GROUP 명령을 실행해 조직 계정에 새 조직 사용자 그룹을 만들어요.

예를 들어 다음 명령은 데이터 엔지니어의 논리적 그룹을 나타내는 조직 사용자 그룹을 만들어요:

USE ROLE GLOBALORGADMIN;

CREATE ORGANIZATION USER GROUP data_engineers_group
 IS_GRANTABLE = TRUE;

관리자가 IS_GRANTABLE=TRUE를 설정했으므로 계정 관리자는 조직 사용자 그룹에서 만든 역할을 로컬 계정 특정 역할에 부여할 수 있을 거예요. 이 매개변수가 없으면 계정 관리자는 조직 사용자 그룹에서 가져온 역할을 일반 계정의 다른 역할에 부여할 수 없어요.

USERADMIN 역할도 조직 사용자 그룹을 만들 수 있어요.

조직 사용자 그룹에 조직 사용자 추가

조직 관리자가 조직 사용자 그룹을 만든 후 ALTER ORGANIZATION USER GROUP 명령을 실행해 조직 사용자를 쉼표로 구분된 목록으로 그룹에 추가할 수 있어요. 예를 들어 두 기존 조직 사용자를 조직 사용자 그룹 data_engineers_group에 추가하려면 다음을 실행하세요:

ALTER ORGANIZATION USER GROUP data_engineers_group
   ADD ORGANIZATION USERS asmith, sjohnson;

일반 계정에서 조직 사용자 그룹 사용 가능하게 만들기

조직 그룹을 만든 후 어떤 일반 계정이 그룹을 보고 가져올 수 있는지 지정해야 해요. ALTER ORGANIZATION USER GROUP 명령으로 그룹의 표시 여부(visibility)를 설정하기 전까지 계정 관리자는 조직 사용자 그룹을 사용해 사용자를 가져올 수 없어요. 모든 일반 계정이 조직 사용자 그룹을 가져올 수 있게 지정하거나 특정 계정으로 접근을 제한할 수 있어요.

다음 명령은 qa_env 계정만 조직 사용자 그룹을 추가할 수 있게 해요:

ALTER ORGANIZATION USER GROUP data_engineers_group
   SET VISIBILITY = ACCOUNTS qa_env;

조직 관리자는 이전에 표시 가능했던 계정에서 조직 사용자 그룹을 일방적으로 숨길 수 없어요. 조직 관리자가 표시 여부를 변경할 수 있으려면 일반 계정의 관리자가 먼저 ALTER ACCOUNT REMOVE ORGANIZATION USER GROUP 명령을 실행해 계정에서 조직 사용자 그룹을 제거해야 해요.

일반 계정에서 사용자 가져오기

조직 관리자가 조직 사용자 그룹을 만든 후 일반 계정의 관리자는 ALTER ACCOUNT 명령을 실행해 조직 사용자 그룹을 추가해 조직 사용자를 가져올 수 있어요. 이 관리자는 조직 관리자가 그룹의 표시 여부를 설정해 일반 계정이 접근할 수 있게 한 경우에만 조직 사용자 그룹을 가져올 수 있어요.

기본적으로 ACCOUNTADMIN 역할이 있는 사용자만 조직 사용자 그룹을 일반 계정으로 가져올 수 있어요. 다른 사용자가 조직 그룹을 가져올 수 있게 하려면 그들에게 IMPORT ORGANIZATION USER GROUPS 권한을 부여하세요.

일반 계정으로 조직 사용자 그룹을 가져오는 구문은 다음과 같아요:

ALTER ACCOUNT ADD ORGANIZATION USER GROUP <group_name>

조직 사용자 그룹을 가져와 사용자를 추가하는 예제는 확장 예제를 참조하세요.

사용자 가져온 후 충돌 해결

자신의 일반 계정에 조직 사용자를 가져오는 계정 관리자는 수동으로 충돌을 확인해야 해요. 이러한 충돌은 사용자의 속성 또는 조직 사용자 그룹 이름 사이에서 발생할 수 있어요.

조직 사용자 그룹과 기존 역할 사이의 충돌

조직 사용자 그룹의 이름이 일반 계정의 기존 역할 이름과 일치할 때 충돌이 발생해요. 충돌을 해결하기 전까지 그룹의 사용자는 가져와지지 않아요.

조직 사용자 그룹을 가져온 후 충돌이 있는지 확인하려면 다음을 수행하세요:

  1. SHOW ORGANIZATION USER GROUPS 명령을 실행하세요.
  2. is_imported 열에서 값이 TRUE인지 확인하세요. 값이 FALSE라면 조직 사용자 그룹이 성공적으로 가져와지지 않은 것이며, 이는 충돌이 있음을 나타낼 수 있어요.

역할과 조직 사용자 그룹 사이의 충돌은 역할을 그룹과 연결(link)해 해결할 수 있어요. 역할을 연결하면 향후 조직 사용자 그룹으로 관리될 수 있어요. 충돌하는 역할을 연결하면 추가 조치 없이 조직 사용자 그룹이 계정에 추가돼요. SYSTEM$LINK_ORGANIZATION_USER_GROUP 함수를 호출해 역할을 조직 사용자 그룹과 연결하세요.

예를 들어 계정에 조직 사용자 그룹 marketing_team을 가져오기 전에 marketing_team이라는 역할이 이미 존재했다고 가정하세요. 역할을 조직 사용자 그룹과 연결하고 그룹 가져오기 과정을 완료하려면 다음을 실행하세요:

SELECT SYSTEM$LINK_ORGANIZATION_USER_GROUP('marketing_team');

조직 사용자와 기존 사용자 사이의 충돌

다음 중 하나가 참일 때 충돌이 발생해요:

  • 조직 사용자의 name 속성이 일반 계정에 있는 기존 사용자의 name과 일치함.
  • 조직 사용자의 login_name 속성이 일반 계정에 있는 기존 사용자의 login_name과 일치함.

조직 사용자 그룹을 가져온 후 사용자 충돌이 있는지 확인하려면 다음을 수행하세요:

  1. SHOW ORGANIZATION USERS IN ORGANIZATION USER GROUP 명령을 실행하세요.
  2. is_imported 열에서 값이 FALSE인 행을 찾으세요. 해당 행의 사용자 속성 중 하나 이상이 기존 사용자의 속성과 충돌해요.

파이프 연산자(->>)를 사용해 SHOW ORGANIZATION USERS의 출력을 후처리하고 is_imported 열을 필터링할 수 있어요. 예를 들어 marketing_team 조직 사용자 그룹에서 성공적으로 가져오지 못한 조직 사용자를 검색하려면 다음 쿼리를 실행하세요:

SHOW ORGANIZATION USERS IN ORGANIZATION USER GROUP marketing_team
  ->> SELECT * FROM $1 WHERE "is_imported" = 'false';

조직 사용자와 기존 사용자 사이의 충돌을 해결하려면 다음 전략 중 하나를 사용하세요:

  • 기존 사용자 연결: 기존 사용자 객체가 조직 사용자와 같은 사람이나 서비스에 해당하고, 향후 사용자를 조직 사용자로 관리하려면 기존 사용자를 조직 사용자와 연결해 충돌을 해결할 수 있어요. SYSTEM$LINK_ORGANIZATION_USER 함수를 호출해 기존 사용자를 조직 사용자와 연결하세요. 예를 들어 기존 사용자 jloeb를 조직 사용자 jloebsmith와 연결하려면 다음과 같이 함수를 호출하세요:
    SELECT SYSTEM$LINK_ORGANIZATION_USER('jloeb', 'jloebsmith');
    
    두 사용자는 호환 유형이어야 해요. SERVICE 조직 사용자는 SERVICE 로컬 사용자에게만 연결될 수 있어요. PERSON 조직 사용자는 PERSON 사용자이거나 TYPE 속성이 NULL인 로컬 사용자에게만 연결될 수 있어요. 유형이 호환되지 않으면 함수가 오류를 반환하고 로컬 사용자는 연결되지 않아요. 조직 사용자의 유형은 변경할 수 없으므로 ALTER USER를 사용해 로컬 사용자의 유형을 변경한 다음 연결하세요. 예를 들어 조직 사용자보다 오래된 서비스 사용자를 SERVICE 조직 사용자 etl_pipeline에 연결하려면:
    ALTER USER legacy_loader SET TYPE = SERVICE;
    
    SELECT SYSTEM$LINK_ORGANIZATION_USER('legacy_loader', 'etl_pipeline');
    
  • 기존 사용자 삭제: 조직 사용자가 로컬 사용자를 완전히 대체하기를 원한다면 DROP USER 명령을 실행해 로컬 사용자를 삭제하세요. 로컬 객체가 삭제된 후 Snowflake는 조직 사용자에 해당하는 새 사용자 객체를 자동으로 추가해요.
  • 기존 사용자 또는 속성 이름 바꾸기: 기존 로컬 사용자를 조직 사용자와 연결하고 싶지 않지만 삭제 대신 기존 사용자를 보존하고 싶다면 일반 계정에서 사용자 객체 또는 속성의 이름을 바꿔 충돌을 해결할 수 있어요. 로컬 객체 이름이 바뀐 후 Snowflake는 조직 사용자에 해당하는 새 사용자 객체를 자동으로 추가해요. 예를 들어 기존 사용자와 조직 사용자 모두 로그인 이름 JOE_LOGIN을 가진 경우 일반 계정에서 다음을 실행해 충돌을 피할 수 있어요:
    USE ROLE ACCOUNTADMIN;
    ALTER USER joe SET LOGIN_NAME = joe_login_renamed;
    

가져온 사용자 수정

일반 계정의 관리자는 ALTER USER 명령을 사용해 사용자 객체가 가져와진 후 사용자 객체 속성의 하위 집합을 수정할 수 있어요. 관리자는 조직 계정의 조직 사용자에 설정할 수 있는 속성을 제외한 모든 속성을 수정할 수 있어요. 조직 계정에서만 설정할 수 있는 속성 목록은 CREATE ORGANIZATION USER를 참조하세요.

사용자와 역할이 가져와졌는지 테스트

일반 계정의 관리자는 SYS_CONTEXT 함수를 사용해 조직 사용자 그룹이 계정으로 가져와졌을 때 로컬 사용자와 역할이 만들어졌는지 확인할 수 있어요.

로컬 사용자 joe가 조직 사용자와 연결됐는지 확인하려면 다음 명령을 실행하세요:

SELECT SYS_CONTEXT('SNOWFLAKE$ORGANIZATION', 'IS_USER_IMPORTED', 'joe');

analysts 역할이 가져온 조직 사용자 그룹에 해당하는지 확인하려면 다음 명령을 실행하세요:

SELECT SYS_CONTEXT('SNOWFLAKE$ORGANIZATION', 'IS_GROUP_IMPORTED', 'analysts');

조직 사용자와 그룹 제거

조직 사용자와 조직 사용자 그룹은 단일 계정에서 제거하거나 조직 계정에서 삭제하여 모든 계정에서 제거할 수 있어요.

단일 일반 계정에서 사용자 제거

계정 관리자는 ALTER ACCOUNT 명령을 실행해 계정에서 조직 사용자 그룹을 제거할 수 있어요. 조직 사용자 그룹을 제거하면 가져온 모든 사용자가 삭제되고 조직 사용자 그룹이 가져와졌을 때 만들어진 역할도 제거돼요. 이 명령은 다른 일반 계정이나 조직 계정의 조직 사용자와 조직 사용자 그룹에는 영향을 주지 않아요.

조직 사용자는 여러 조직 사용자 그룹의 멤버가 될 수 있어요. 사용자가 둘 이상의 조직 그룹에서 가져와진 경우 일반 계정에서 그룹 중 하나를 제거해도 사용자는 제거되지 않아요. 모든 조직 사용자 그룹이 제거될 때까지 사용자는 제거되지 않아요.

예를 들어 다음 명령은 data_stewards 그룹에서 가져온 모든 사용자를 삭제하고 data_stewards 역할을 삭제해요:

ALTER ACCOUNT REMOVE ORGANIZATION USER GROUP data_stewards;

모든 일반 계정에서 사용자 제거

조직 계정에서 조직 사용자가 삭제되면 사용자를 가져온 모든 일반 계정에서 해당 사용자 객체가 삭제돼요. 조직 사용자를 삭제하려면 조직 계정에서 DROP ORGANIZATION USER 명령을 실행하세요.

조직 계정에서 조직 사용자 그룹이 삭제되면 일반 계정의 사용자가 계정에도 가져와진 다른 조직 사용자 그룹에 속하는지에 따라 조직 사용자에 대한 영향이 달라져요. 조직 사용자가 가져온 다른 조직 사용자 그룹에 속한다면 사용자는 계정에서 제거되지 않아요. 그렇지 않으면 조직 사용자 그룹을 삭제하면 그룹에서 가져온 모든 사용자가 제거돼요.

조직 사용자 그룹을 삭제하면 그룹이 가져와졌을 때 만들어진 역할도 제거돼요.

조직 사용자 그룹을 삭제하려면 조직 계정에서 DROP ORGANIZATION USER GROUP 명령을 실행하세요.

조직 사용자 및 조직 사용자 그룹 연결 해제

조직 사용자가 일반 계정으로 성공적으로 가져와지면 로컬 사용자 객체는 조직 사용자와 연결돼요. 사용자 객체를 계정에 유지하고 싶지만 더 이상 조직 사용자와 연결하지 않으려면 SYSTEM$UNLINK_ORGANIZATION_USER 함수를 사용해 로컬 사용자를 조직 사용자에서 연결 해제할 수 있어요. 사용자의 모든 속성은 보존되며 향후 로컬 사용자로 관리될 수 있어요.

마찬가지로 SYSTEM$UNLINK_ORGANIZATION_USER_GROUP 함수를 사용해 조직 사용자 그룹을 추가해 만들어진 역할을 연결 해제할 수 있어요. 이렇게 하면 역할의 모든 것이 동일하게 유지되지만 조직 사용자 그룹에서 연결이 해제돼요. 조직 사용자 그룹이 가져와졌을 때 추가된 로컬 사용자 객체도 연결이 해제되며 향후 로컬 사용자로 관리돼요.

확장 예제

조직 관리자 워크플로

조직 관리자로서 조직 계정에 로그인하세요.

데이터 스튜어드인 두 사람에 대한 조직 사용자를 만드세요:

USE ROLE GLOBALORGADMIN;

CREATE ORGANIZATION USER joe_kelley
EMAIL = '[email protected]'
LOGIN_NAME = '[email protected]';

CREATE ORGANIZATION USER grace_vivian
EMAIL = '[email protected]'
LOGIN_NAME = '[email protected]';

데이터 스튜어드의 논리적 그룹을 나타내는 조직 사용자 그룹을 만드세요.

CREATE ORGANIZATION USER GROUP data_stewards_group;

새 조직 사용자 그룹에 조직 사용자를 추가하세요.

ALTER ORGANIZATION USER GROUP data_stewards_group
ADD ORGANIZATION USERS joe_kelley, grace_vivian;

모든 일반 계정이 조직 사용자 그룹을 가져올 수 있게 하세요.

ALTER ORGANIZATION USER GROUP data_stewards_group
SET VISIBILITY = ALL;

계정 관리자 워크플로

계정 관리자로서 조직 사용자를 가져오려는 일반 계정에 로그인하세요.

계정으로 가져올 수 있는 조직 사용자 그룹을 나열하세요.

USE ROLE ACCOUNTADMIN;

SHOW ORGANIZATION USER GROUPS;

조직 사용자 그룹을 계정으로 가져오세요.

ALTER ACCOUNT
  ADD ORGANIZATION USER GROUP data_stewards_group;

조직 사용자 그룹과 기존 역할 사이의 충돌을 확인하세요:

SHOW ORGANIZATION USER GROUPS;

is_imported 열의 값이 TRUE인지 확인하세요. 이는 충돌이 없음을 나타내요.

계정에 추가된 사용자를 나열하고 충돌을 확인하세요:

SHOW ORGANIZATION USERS IN ORGANIZATION USER GROUP data_stewards_group;

모든 조직 사용자에 대해 is_imported 열의 값이 TRUE인지 확인하세요. 이는 충돌이 없음을 나타내요.

관련 함수

조직 사용자 및 조직 사용자 그룹 작업을 돕는 함수 목록은 조직 사용자 및 조직 사용자 그룹 함수를 참조하세요.

제한 사항 및 고려 사항

조직 사용자가 일반 계정에 추가된 후에는 다른 사용자와 동일한 방식으로 사용자의 인증 방법을 설정할 거예요. 조직 수준에서 인증을 설정할 수 없어요.

더 알아보기