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
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