第5章 ユーザーモデル

メッセージングクライアントは MessagingUser を使用して接続します。MessagingUser は、使用できるアドレスとそれらのアドレスで実行できる操作を制御する許可ポリシーを指定します。

ユーザーは MessagingUser リソースとして設定されます。ユーザーは、作成、削除、読み取り、更新、および一覧表示できます。

次の例は、user-example1.yaml ファイルを示しています。

apiVersion: user.enmasse.io/v1beta1
kind: MessagingUser
metadata:
  name: myspace.user1
spec:
  username: user1
  authentication:
    type: password
    password: cGFzc3dvcmQ= # Base64 encoded
  authorization:
    - addresses: ["myqueue", "queue1", "queue2", "topic*"]
      operations: ["send", "recv"]
    - addresses: ["anycast1"]
      operations: ["send"]

次のフィールドは必須です。

  • metadata.name
  • metadata.namespace
  • spec.authentication
  • spec.authorization

spec.authentication オブジェクトはユーザーの認証方法を定義し、spec.authorization はそのユーザーの承認ポリシーを定義します。

5.1. 認証

認証タイプでサポートされている値は passwordserviceaccount です。password 認証タイプを使用する場合は、接続時にメッセージングクライアントが使用するユーザー名とパスワードを指定します。serviceaccount 認証タイプでは、特別な文字列 @@serviceaccount@@ をユーザー名として使用し、OpenShift サービスアカウントトークンをパスワードとして使用します。

5.1.1. パスワード認証の種類

password タイプの場合には、追加フィールドの パスワード を、そのユーザーのパスワードの base64 エンコード値に設定する必要があります。リソースの読み取り時にパスワードは出力されません。

パスワードは、コマンドラインで base64 エンコードできます。たとえば、my-password をエンコードするには以下を実行します。

$ echo -n my-password | base64
bXktcGFzc3dvcmQ=

5.1.2. サービスアカウント認証タイプ

serviceaccount タイプの場合、username フィールドには、認証に使用される OpenShift サービスアカウント名が含まれている必要があります。メッセージングクライアントに接続するときは、文字列 @@serviceaccount@@ をユーザー名として使用し、サービスアカウントトークンをパスワードとして使用します。アプリケーションで使用される AMQP クライアントは、SASL メカニズムタイプ PLAIN を使用するように設定する必要があります。