Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

8.5. ブローカー認証

ブローカーは認証をサポートします。つまり、ブローカーに接続する際に、呼び出し側は各要求に対して Basic Auth または Bearer Auth 認証情報を指定する必要があります。 curl を使用し、以下のように簡単に実行できます。

-u <user_name>:<password>

または

-h "Authorization: bearer <token>

上記をコマンドに指定します。サービスカタログをユーザー名とパスワードの組み合わせ、またはベアラートークンが含まれるシークレットで設定する必要があります。

8.5.1. Basic 認証

Basic 認証の使用を有効にするには、ブローカー設定で以下を設定します。

broker:
   ...
   auth:
     - type: basic 1
       enabled: true 2
1
type フィールドは使用する認証タイプを指定します。
2
enabled フィールドでは、特定の認証タイプを無効にすることができます。これにより、これを無効にするために auth のセクション全体を削除する必要がなくなります。

8.5.1.1. デプロイメントテンプレートおよびシークレット

通常、ブローカーはデプロイメントテンプレートで ConfigMap を使用して設定されます。ファイル設定と同様の方法で認証設定を指定できます。

以下は、デプロイメントテンプレートのサンプルになります。

auth:
  - type: basic
    enabled: ${ENABLE_BASIC_AUTH}

Basic 認証の別の部分には、ブローカーに対して認証するために使用されるユーザー名とパスワードが含まれます。Basic 認証の実装は別のバックエンドサービスでサポートされる可能性があるものの、現時点でサポートされている実装は シークレット に対応します。シークレットは /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 シークレットで作成されるユーザー名およびパスワードの 2 つのファイルがあります。

8.5.1.2. サービスカタログおよびブローカー通信の設定

ブローカーが Basic 認証を使用するように設定されているため、サービスカタログに対してブローカーとの通信方法について指示する必要があります。これは、ブローカーリソースの authInfo セクションで実行できます。

以下は、サービスカタログで broker リソースを作成する例になります。spec はサービスカタログに対し、ブローカーがリッスンしている 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