4.3. Operator 기반 브로커 배포에 대한 보안 구성 생성

4.3.1. Operator 기반 브로커 배포에 대한 보안 구성 생성

다음 절차에서는 CR(사용자 정의 리소스) 인스턴스를 사용하여 Operator 기반 브로커 배포에 사용자 및 관련 보안 구성을 추가하는 방법을 보여줍니다.

사전 요구 사항

절차

브로커 배포를 생성하기 전이나 후에 보안 CR을 배포할 수 있습니다. 그러나 브로커 배포를 생성한 후 보안 CR을 배포하면 브로커 Pod가 다시 시작하여 새 구성을 수락합니다.

  1. CR(사용자 정의 리소스) 인스턴스 구성을 시작하여 브로커 배포에 대한 사용자 및 관련 보안 구성을 정의합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemissecurity_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 주소 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemisSecurity CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemisSecurity 를 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

  2. CR의 spec 섹션에서 사용자 및 역할을 정의하는 행을 추가합니다. 예를 들면 다음과 같습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemisSecurity
    metadata:
      name: ex-prop
    spec:
      loginModules:
        propertiesLoginModules:
          - name: "prop-module"
            users:
              - name: "sam"
                password: "samspassword"
                roles:
                  - "sender"
              - name: "rob"
                password: "robspassword"
                roles:
                  - "receiver"
      securityDomains:
        brokerDomain:
          name: "activemq"
          loginModules:
            - name: "prop-module"
              flag: "sufficient"
      securitySettings:
        broker:
          - match: "#"
            permissions:
              - operationType: "send"
                roles:
                  - "sender"
              - operationType: "createAddress"
                roles:
                  - "sender"
              - operationType: "createDurableQueue"
                roles:
                  - "sender"
              - operationType: "consume"
                roles:
                  - "receiver"
                  ...
    참고

    항상 이전 예제의 요소 값을 지정합니다. 예를 들어 securityDomains.brokerDomain 또는 역할의 값을 지정하지 않으면 결과 구성으로 인해 예기치 않은 결과가 발생할 수 있습니다.

    앞의 구성은 두 사용자를 정의합니다.

    • sender 라는 역할로 sam 이라는 사용자를 정의하는 propertiesLoginModule 이라는 prop-module.
    • receiver 라는 역할이 있는 developer라는 사용자를 정의하는 prop- module 이라는 propertiesLoginModule 입니다.

    이러한 역할의 속성은 securityDomains 섹션의 broker Domain 및 broker 섹션에 정의되어 있습니다. 예를 들어 send 역할은 해당 역할을 가진 사용자가 모든 주소에 있는 영구 대기열을 생성할 수 있도록 정의되었습니다. 기본적으로 구성은 현재 네임스페이스의 CR에 정의된 모든 배포된 브로커에 적용됩니다. 특정 브로커 배포로 구성을 제한하려면 8.1.3절. “보안 사용자 정의 리소스 구성 참조” 에 설명된 applyToCrNames 옵션을 사용합니다.

    참고

    metadata 섹션에서 namespace 속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.

  3. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 위해 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/address_custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.

4.3.2. 시크릿에 사용자 암호 저장

Operator 기반 브로커 배포 절차에 대한 보안 구성 생성 절차에서 사용자 암호는 ActiveMQArtemisSecurity CR에 일반 텍스트로 저장됩니다. CR에 암호를 일반 텍스트로 저장하지 않으려면 CR에서 암호를 제외하여 시크릿에 저장할 수 있습니다. CR을 적용하면 Operator는 시크릿에서 각 사용자의 암호를 검색하여 브로커 Pod의 artemis-users.properties 파일에 삽입합니다.

절차

  1. oc create secret 명령을 사용하여 보안을 생성하고 각 사용자의 이름과 암호를 추가합니다. 보안 이름은 security-properties-모듈 이름 지정 규칙을 따라야 합니다. 여기서 모듈 이름은 CR에 구성된 로그인 모듈의 이름입니다. 예를 들면 다음과 같습니다.

    oc create secret generic security-properties-prop-module \
      --from-literal=sam=samspassword \
      --from-literal=rob=robspassword
  2. CR의 spec 섹션에서 역할 정보와 함께 시크릿에 지정한 사용자 이름을 추가하지만 각 사용자의 암호는 포함하지 않습니다. 예를 들면 다음과 같습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemisSecurity
    metadata:
      name: ex-prop
    spec:
      loginModules:
        propertiesLoginModules:
          - name: "prop-module"
            users:
              - name: "sam"
                roles:
                  - "sender"
              - name: "rob"
                roles:
                  - "receiver"
      securityDomains:
        brokerDomain:
          name: "activemq"
          loginModules:
            - name: "prop-module"
              flag: "sufficient"
      securitySettings:
        broker:
          - match: "#"
            permissions:
              - operationType: "send"
                roles:
                  - "sender"
              - operationType: "createAddress"
                roles:
                  - "sender"
              - operationType: "createDurableQueue"
                roles:
                  - "sender"
              - operationType: "consume"
                roles:
                  - "receiver"
                  ...
  3. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 위해 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/address_custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 완료하면 생성을 클릭합니다.

추가 리소스

OpenShift Container Platform의 보안에 대한 자세한 내용은 OpenShift Container Platform 설명서의 Pod에 중요한 데이터 제공을 참조하십시오.