8.5. 브로커 인증
브로커는 브로커에 연결할 때 호출자가 각 요청에 대해 Basic Auth 또는 Bearer Auth 자격 증명을 제공해야 하는 인증을 지원합니다. curl
을 사용하면 다음과 같이 간단합니다.
-u <user_name>:<password>
또는
-h "Authorization: bearer <token>
명령을 실행합니다. 서비스 카탈로그는 사용자 이름 및 암호 조합 또는 전달자 토큰이 포함된 시크릿을 사용하여 구성해야 합니다.
8.5.1. 기본 인증
기본 인증 사용을 활성화하려면 브로커 구성에서 다음을 설정합니다.
broker: ... auth: - type: basic 1 enabled: true 2
8.5.1.1. 배포 템플릿 및 시크릿
일반적으로 브로커는 배포 템플릿에서 ConfigMap 을 사용하여 구성됩니다. 파일 구성과 동일한 방식으로 인증 구성을 제공합니다.
다음은 배포 템플릿의 예입니다.
auth: - type: basic enabled: ${ENABLE_BASIC_AUTH}
Basic Auth(기본 인증)의 또 다른 부분은 브로커에 대해 인증하는 데 사용되는 사용자 이름과 암호입니다. 기본 인증 구현은 다양한 백엔드 서비스에서 지원할 수 있지만 현재 지원되는 구현은 비밀 에서 지원합니다. /var/run/asb_auth 위치의 볼륨 마운트를 통해 시크릿을 Pod에 삽입해야 합니다. 여기서 브로커가 사용자 이름과 암호를 읽습니다.
배포 템플릿에서 보안을 지정해야 합니다. 예를 들면 다음과 같습니다.
- apiVersion: v1 kind: Secret metadata: name: asb-auth-secret namespace: openshift-ansible-service-broker data: username: ${BROKER_USER} password: ${BROKER_PASS}
시크릿에는 사용자 이름과 암호가 포함되어야 합니다. 값은 base64로 인코딩되어야 합니다. 해당 항목의 값을 생성하는 가장 쉬운 방법은 echo
및 base64
명령을 사용하는 것입니다.
$ echo -n admin | base64 1
YWRtaW4=
- 1
- n
옵션은
매우 중요합니다.
이제 이 시크릿을 볼륨 마운트를 통해 Pod에 삽입해야 합니다. 이는 배포 템플릿에서도 구성됩니다.
spec: serviceAccount: asb containers: - image: ${BROKER_IMAGE} name: asb imagePullPolicy: IfNotPresent volumeMounts: ... - name: asb-auth-volume mountPath: /var/run/asb-auth
그런 다음 volumes
섹션에서 보안을 마운트합니다.
volumes: ... - name: asb-auth-volume secret: secretName: asb-auth-secret
위의 경우 /var/run/asb-auth 에 있는 볼륨 마운트가 생성됩니다. 이 볼륨에는 두 개의 파일, 즉 asb-auth-secret 보안에서 작성한 사용자 이름과 암호가 있습니다.
8.5.1.2. 서비스 카탈로그 및 브로커 통신 구성
이제 브로커가 Basic Auth를 사용하도록 구성되었으므로 서비스 카탈로그에 브로커와 통신하는 방법을 알려야 합니다. 이 작업은 브로커 리소스의 authInfo
섹션에서 수행합니다.
다음은 서비스 카탈로그에서 브로커
리소스를 생성하는 예입니다. 사양은
브로커가 수신 대기 중인 URL을 서비스 카탈로그에 알려줍니다. authInfo
는 인증 정보를 얻기 위해 읽을 시크릿을 알려줍니다.
apiVersion: servicecatalog.k8s.io/v1alpha1 kind: Broker metadata: name: ansible-service-broker spec: url: https://asb-1338-openshift-ansible-service-broker.172.17.0.1.nip.io authInfo: basicAuthSecret: namespace: openshift-ansible-service-broker name: asb-auth-secret
서비스 카탈로그의 v0.0.17부터 브로커 리소스 구성이 변경됩니다.
apiVersion: servicecatalog.k8s.io/v1alpha1 kind: ServiceBroker metadata: name: ansible-service-broker spec: url: https://asb-1338-openshift-ansible-service-broker.172.17.0.1.nip.io authInfo: basic: secretRef: namespace: openshift-ansible-service-broker name: asb-auth-secret