검색

6장. 고급 구성

download PDF

스토리지 관리자는 Ceph Object Gateway의 고급 기능 일부를 구성할 수 있습니다. 다중 사이트 Ceph Object Gateway를 구성하고 이를 Microsoft Active Directory 및 OpenStack Keystone 서비스와 같은 디렉터리 서비스와 통합할 수 있습니다.

사전 요구 사항

  • 정상 실행 Red Hat Ceph Storage 클러스터.

6.1. LDAP 및 Ceph Object Gateway 구성

Ceph Object Gateway 사용자를 인증하도록 Red Hat Directory Server를 구성하려면 다음 단계를 수행합니다.

6.1.1. Red Hat Directory Server 설치

Java Swing GUI 디렉터리 및 관리 콘솔을 사용하려면 GUI(그래픽 사용자 인터페이스)가 있는 Red Hat Enterprise Linux 9에 Red Hat Directory Server를 설치해야 합니다. 그러나 Red Hat Directory Server는 명령행 인터페이스(CLI)에서만 서비스를 제공할 수 있습니다.

사전 요구 사항

  • RHEL(Red Hat Enterprise Linux)이 서버에 설치되어 있습니다.
  • Directory Server 노드의 FQDN은 DNS 또는 /etc/hosts 파일을 사용하여 확인할 수 있습니다.
  • Directory Server 노드를 Red Hat 서브스크립션 관리 서비스에 등록합니다.
  • Red Hat 계정에서 유효한 Red Hat Directory Server 서브스크립션을 사용할 수 있습니다.

프로세스

  • Red Hat Directory Server 설치 가이드1 장과 2장의 지침을 따르십시오.

추가 리소스

6.1.2. Directory Server 방화벽 구성

LDAP 호스트에서 LDAP 클라이언트가 디렉터리 서버에 액세스할 수 있도록 방화벽에서 디렉터리 서버의 보안(636) 포트에 액세스할 수 있는지 확인합니다. 기본 비보안 포트 (389)를 종료한 상태로 둡니다.

# firewall-cmd --zone=public --add-port=636/tcp
# firewall-cmd --zone=public --add-port=636/tcp --permanent

6.1.3. SELinux의 레이블 포트

SELinux가 요청을 차단하지 않도록 하려면 SELinux의 포트에 레이블을 지정합니다. 자세한 내용은 Red Hat Directory Server 10 관리 가이드의 디렉터리 서버 포트 번호 변경 섹션을 참조하십시오.

6.1.4. LDAPS 구성

Ceph Object Gateway는 간단한 ID와 암호를 사용하여 LDAP 서버로 인증하므로 연결에 LDAP에 대한 SSL 인증서가 필요합니다. LDAP용 Directory Server를 구성하려면 Red Hat Directory Server 11 관리 가이드보안 연결 구성 장을 참조하십시오.

LDAP가 작동되면 디렉터리 서버의 인증서를 신뢰하도록 Ceph Object Gateway 서버를 구성합니다.

  1. LDAP 서버의 SSL 인증서에 서명한 CA(인증 기관)의 PEM 형식의 인증서를 추출/ 다운로드합니다.
  2. /etc/openldap/ldap.confTLS_REQCERT 가 설정되어 있지 않은지 확인합니다.
  3. /etc/openldap/ldap.confTLS_CACERTDIR /etc/openldap/certs 설정이 포함되어 있는지 확인합니다.
  4. certutil 명령을 사용하여 AD CA를 /etc/openldap/certs의 저장소에 추가합니다. 예를 들어 CA가 "msad-frog-MSAD-FROG-CA"이고 PEM 형식의 CA 파일이 ldap.pem 인 경우 다음 명령을 사용합니다.

    예제

    # certutil -d /etc/openldap/certs -A -t "TC,," -n "msad-frog-MSAD-FROG-CA" -i /path/to/ldap.pem

  5. 모든 원격 LDAP 사이트에서 SELinux를 업데이트합니다.

    예제

    # setsebool -P httpd_can_network_connect on

    참고

    SELinux가 허용 모드에 있는 경우에도 이 설정을 설정해야 합니다.

  6. 인증서 데이터베이스 세계로 읽을 수 있도록 설정합니다.

    예제

    # chmod 644 /etc/openldap/certs/*

  7. root가 아닌 사용자로 "ldapwhoami" 명령을 사용하여 서버에 연결합니다.

    예제

    $ ldapwhoami -H ldaps://rh-directory-server.example.com -d 9

    d 9 옵션은 SSL 협상에 문제가 발생한 경우 디버깅 정보를 제공합니다.

6.1.5. gateway 사용자가 있는지 확인합니다.

gateway 사용자를 만들기 전에 Ceph Object Gateway에 사용자가 없는지 확인합니다.

예제

[ceph: root@host01 /]# radosgw-admin metadata list user

사용자 이름은 이 사용자 목록에 없어야 합니다.

6.1.6. 게이트웨이 사용자 추가

사용자 LDAP에 Ceph Object Gateway 사용자를 만듭니다.

프로세스

  1. Ceph Object Gateway에 대한 LDAP 사용자를 만들고 binddn 을 기록합니다. Ceph 개체 게이트웨이는 ceph 사용자를 사용하므로 사용자 이름으로 ceph 를 사용하는 것이 좋습니다. 사용자에게 디렉터리를 검색할 수 있는 권한이 있어야 합니다. Ceph Object Gateway는 rgw_ldap_binddn 에 지정된 대로 이 사용자에게 바인딩합니다.
  2. 사용자 생성이 작동하는지 테스트합니다. 여기서 cephPeople 의 사용자 ID이고 example.com 은 도메인이므로 사용자를 검색할 수 있습니다.

    # ldapsearch -x -D "uid=ceph,ou=People,dc=example,dc=com" -W -H ldaps://example.com -b "ou=People,dc=example,dc=com" -s sub 'uid=ceph'
  3. 각 게이트웨이 노드에서 사용자 시크릿에 대한 파일을 생성합니다. 예를 들어 시크릿은 /etc/bindpass 가 부여된 파일에 저장할 수 있습니다. 보안을 위해 이 파일의 소유자를 ceph 사용자 및 그룹으로 변경하여 전역에서 읽을 수 없도록 합니다.
  4. rgw_ldap_secret 옵션을 추가합니다.

    구문

    ceph config set client.rgw OPTION VALUE

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_secret /etc/bindpass

  5. 바인딩 암호 파일을 Ceph Object Gateway 컨테이너에 패치하고 Ceph Object Gateway 사양을 다시 적용합니다.

    예제

    service_type: rgw
    service_id: rgw.1
    service_name: rgw.rgw.1
    placement:
      label: rgw
      extra_container_args:
      - -v
      - /etc/bindpass:/etc/bindpass

    참고

    /etc/bindpass 는 Red Hat Ceph Storage에서 자동으로 제공되지 않으며 가능한 모든 Ceph Object Gateway 인스턴스 노드에서 콘텐츠를 사용할 수 있는지 확인해야 합니다.

6.1.7. LDAP를 사용하도록 게이트웨이 구성

  1. 모든 Ceph 노드에서 다음 명령을 사용하여 Ceph 구성을 변경합니다.

    구문

    ceph config set client.rgw OPTION VALUE

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_uri ldaps://:636
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_binddn "ou=poc,dc=example,dc=local"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_searchdn "ou=poc,dc=example,dc=local"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_dnattr "uid"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_ldap true

  2. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE

      예제

      [ceph: root@host01 /]# ceph orch restart rgw

6.1.8. 사용자 정의 검색 필터 사용

사용자 지정 검색 필터를 생성하여 rgw_ldap_searchfilter 설정을 사용하여 사용자 액세스를 제한할 수 있습니다. rgw_ldap_searchfilter 설정을 사용하는 방법은 다음 두 가지가 있습니다.

  1. 부분 필터 지정:

    예제

    "objectclass=inetorgperson"

    Ceph Object Gateway는 토큰에서 사용자 이름과 rgw_ldap_dnattr 값을 사용하여 검색 필터를 생성합니다. 그런 다음 생성된 필터가 rgw_ldap_searchfilter 값의 부분 필터와 결합됩니다. 예를 들어 사용자 이름 및 설정은 최종 검색 필터를 생성합니다.

    예제

    "(&(uid=joe)(objectclass=inetorgperson))"

    사용자 joe 는 LDAP 디렉터리에 개체 클래스가 있는 경우에만 액세스 권한이 부여되며 유효한 암호를 지정합니다.

  2. 전체 필터 지정:

    전체 필터에는 인증 시도 중에 사용자 이름으로 대체되는 USERNAME 토큰이 포함되어야 합니다. 이 경우 rgw_ldap_dnattr 설정은 사용되지 않습니다. 예를 들어 유효한 사용자를 특정 그룹으로 제한하려면 다음 필터를 사용합니다.

    예제

    "(&(uid=@USERNAME@)(memberOf=cn=ceph-users,ou=groups,dc=mycompany,dc=com))"

6.1.9. LDAP 서버에 S3 사용자 추가

LDAP 서버의 관리 콘솔에서 S3 클라이언트에서 LDAP 사용자 자격 증명을 사용할 수 있도록 하나 이상의 S3 사용자를 생성합니다. 인증 정보를 S3 클라이언트에 전달할 때 사용할 사용자 이름과 시크릿을 기록해 둡니다.

6.1.10. LDAP 토큰 내보내기

LDAP를 사용하여 Ceph Object Gateway를 실행하는 경우 액세스 토큰이 모두 필요합니다. 그러나 액세스 토큰은 액세스 키 및 시크릿 키에서 생성됩니다. 액세스 키와 시크릿 키를 LDAP 토큰으로 내보냅니다.

  1. 액세스 키를 내보냅니다.

    구문

    export RGW_ACCESS_KEY_ID="USERNAME"

  2. 시크릿 키를 내보냅니다.

    구문

    export RGW_SECRET_ACCESS_KEY="PASSWORD"

  3. 토큰을 내보냅니다. LDAP의 경우 ldap 를 토큰 유형(ttype)으로 사용합니다.

    예제

    radosgw-token --encode --ttype=ldap

    Active Directory의 경우 ad 를 토큰 유형으로 사용합니다.

    예제

    radosgw-token --encode --ttype=ad

    결과적으로 액세스 토큰인 base-64로 인코딩된 문자열이 생성됩니다. 액세스 키 대신 S3 클라이언트에 이 액세스 토큰을 제공합니다. 시크릿 키는 더 이상 필요하지 않습니다.

  4. 선택 사항: 추가 편의를 위해 S3 클라이언트에서 환경 변수를 사용하는 경우 base-64로 인코딩된 문자열을 RGW_ACCESS_KEY_ID 환경 변수로 내보냅니다.

    예제

    export RGW_ACCESS_KEY_ID="ewogICAgIlJHV19UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAibGRhcCIsCiAgICAgICAgImlkIjogImNlcGgiLAogICAgICAgICJrZXkiOiAiODAwI0dvcmlsbGEiCiAgICB9Cn0K"

6.1.11. S3 클라이언트로 구성 테스트

Python Boto와 같은 스크립트를 사용하여 Ceph Object Gateway 클라이언트로 구성을 테스트합니다.

절차.

  1. RGW_ACCESS_KEY_ID 환경 변수를 사용하여 Ceph Object Gateway 클라이언트를 구성합니다. 또는 base-64로 인코딩된 문자열을 복사하여 액세스 키로 지정할 수 있습니다. 다음은 구성된 S3 클라이언트의 예입니다.

    예제

    cat .aws/credentials
    
    [default]
    aws_access_key_id = ewogICaGbnjlwe9UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAiYWQiLAogICAgICAgICJpZCI6ICJjZXBoIiwKICAgICAgICAia2V5IjogInBhc3M0Q2VwaCIKICAgIH0KfQo=
    aws_secret_access_key =

    참고

    시크릿 키는 더 이상 필요하지 않습니다.

  2. aws s3 ls 명령을 실행하여 사용자를 확인합니다.

    예제

    [root@host01 ~]# aws s3 ls --endpoint http://host03
    
    2023-12-11 17:08:50 mybucket
    2023-12-24 14:55:44 mybucket2

  3. 선택 사항: radosgw-admin 사용자 명령을 실행하여 디렉터리의 사용자를 확인할 수도 있습니다.

    예제

    [root@host01 ~]# radosgw-admin user info --uid dir1
    {
        "user_id": "dir1",
        "display_name": "dir1",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "ldap",
        "mfa_ids": []
    }

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.