Azure Arc 지원 PostgreSQL 하이퍼스케일 서버 그룹에 대한 보안 구성

본 문서에서는 서버 그룹 보안에 관련된 다양한 측면에 대하여 설명합니다.

  • 미사용 데이터 암호화
  • Postgres 역할 및 사용자 관리
    • 일반적인 큐브 뷰
    • postgres 관리 사용자의 암호 변경
  • Audit

참고 항목

미리 보기 기능으로, 이 문서에 제시된 기술에는 Microsoft Azure 미리 보기에 대한 보충 사용 약관이 적용됩니다.

최신 업데이트는 릴리스 정보에서 확인할 수 있습니다.

미사용 데이터 암호화

데이터 베이스를 저장하는 디스크를 암호화하고/하거나 삽입 또는 업데이트하는 데이터를 암호화하는 데이터베이스 기능을 이용하여 미사용 암호화를 구현할 수 있습니다.

하드웨어: Linux 호스트 볼륨 암호화

시스템 데이터 암호화를 구현하여 Azure Arc 지원 Data Services 설정에서 사용하는 디스크 내의 모든 데이터를 보호합니다. 해당 토픽에 대한 자세한 설명은 다음을 확인하세요.

소프트웨어: 서버 그룹에 PostgreSQL pgcrypto 확장 사용하기

Azure Arc 설정을 호스팅하는 데 사용되는 디스크를 암호화하는 것 외에도 애플리케이션이 데이터베이스의 데이터를 암호화하는 데 사용할 수 있는 메커니즘을 노출하도록 Azure Arc 지원 PostgreSQL 서버를 구성할 수 있습니다. pgcrypto 확장은 Postgres의 contrib 확장의 일부이며 Azure Arc 지원 PostgreSQL 서버에서 사용할 수 있습니다. 해당pgcrypto 확장에 대한 자세한 내용은 여기를 참조하세요. 요약하면, 다음 명령을 통하여 확장을 사용하도록 설정하고, 생성하여, 사용할 수 있습니다.

pgcrypto 확장 만들기

선택한 클라이언트 도구를 사용하여 서버 그룹에 연결하고 표준 PostgreSQL 쿼리를 실행합니다.

CREATE EXTENSION pgcrypto;

여기에서 연결 방법에 대하여 자세한 내용을 확인합니다.

서버 그룹에서 사용할 준비가 된 확장 목록을 확인합니다.

서버 그룹에서 사용할 수 있는 확장을 나열하여 pgcrypto 확장을 사용할 준비가 되었는지 확인할 수 있습니다. 선택한 클라이언트 도구를 사용하여 서버 그룹에 연결하고 표준 PostgreSQL 쿼리를 실행합니다.

select * from pg_extension;

위에 표시된 명령을 통하여 pgcrypto를 사용하도록 설정하고 만들었는지 확인하여야 합니다.

pgcrypto 확장 사용

이제 애플리케이션의 코드를 조정하여 pgcrypto에서 제공하는 다음 함수를 사용할 수 있습니다.

  • 일반 해시 함수
  • 암호 해시 함수
  • PGP 암호화 함수
  • 원시 암호화 함수
  • 임의 데이터 함수

예를 들어, 해시 값을 생성합니다. 다음 명령을 실행합니다.

select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));

다음 해시를 반환합니다.

              crypt
------------------------------------
 $1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/   

또는 다음 예시가 있습니다.

select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');

다음 해시를 반환합니다.

                                hmac
--------------------------------------------------------------------
 \xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5

또 다른 예시로, 암호 같이 암호화된 데이터를 저장합니다.

  • 애플리케이션은 다음 테이블에 비밀을 저장합니다.

    create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
    
  • 사용자를 만들 때 암호를 암호화합니다.

    insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
    
  • 암호는 암호화되어 있습니다.

    select * from mysecrets;
    

출력

- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31

애플리케이션에 연결하고 암호를 전달하면 mysecrets 테이블을 조회하여 애플리케이션에 제공된 암호와 테이블에 저장된 암호가 일치하는 경우 사용자 이름을 반환합니다. 예시:

  • 잘못된 암호 전달:

    select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
    

    출력

      USERname
    ---------
    (0 rows)
    
  • 올바른 암호 전달:

    select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
    

    출력

      USERname
    ---------
    Me
    (1 row)
    

소규모인 해당 예는 Postgres pgcrypto 확장을 사용하여 Azure Arc 지원 PostgreSQL 서버의 미사용 데이터를 암호화(암호화된 데이터를 저장)할 수 있고 애플리케이션은 이렇게 암호화된 데이터를 조종하기 위하여 pgcrypto가 제공한 함수를 사용할 수 있다는 것을 보여줍니다.

Postgres 역할 및 사용자 관리

일반적인 큐브 뷰

Azure Arc 지원 PostgreSQL 서버에서 역할 및 사용자를 구성하려면 표준 Postgres 방식을 사용하여 역할 및 사용자를 관리합니다. 자세한 내용은 여기를 참조하세요.

Audit

감사 시나리오에서는 서버 그룹이 Postgres의 pgaudit 확장을 사용하도록 구성하세요. pgaudit에 대한 자세한 내용은 pgAudit GitHub 프로젝트를 참조하세요. 서버 그룹에서 pgaudit 확장을 사용하도록 하려면 PostgreSQL 확장 사용하기를 참조하세요.

SSL 연결 사용

SSL은 클라이언트 연결에 필요합니다. 연결 문자열에서 SSL 모드 매개 변수를 사용하지 않도록 설정하면 안 됩니다. 연결 문자열 구성.