第76章 KafkaClientAuthenticationOAuth スキーマ参照
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationOAuth
スキーマプロパティーの全リスト
OAuth クライアント認証を設定するには、type
プロパティーを oauth
に設定します。
OAuth 認証は、以下のオプションのいずれかを使用して設定できます。
- クライアント ID およびシークレット
- クライアント ID および更新トークン
- アクセストークン
- ユーザー名およびパスワード
- TLS
クライアント ID およびシークレット
認証で使用されるクライアント ID およびクライアントシークレットとともに、tokenEndpointUri
プロパティーで認可サーバーのアドレスを設定できます。OAuth クライアントは OAuth サーバーに接続し、クライアント ID およびシークレットを使用して認証し、Kafka ブローカーとの認証に使用するアクセストークンを取得します。clientSecret
プロパティーで、クライアントシークレットを含む Secret
へのリンクを指定します。
クライアント ID およびクライアントシークレットを使用した OAuth クライアント認証の例
必要に応じて、scope
と audience
を指定できます。
クライアント ID および更新トークン
OAuth クライアント ID および更新トークンとともに、tokenEndpointUri
プロパティーで OAuth サーバーのアドレスを設定できます。OAuth クライアントは OAuth サーバーに接続し、クライアント ID と更新トークンを使用して認証し、Kafka ブローカーとの認証に使用するアクセストークンを取得します。refreshToken
プロパティーで、更新トークンが含まれる Secret
へのリンクを指定します。
クライアント ID と更新トークンを使用した OAuth クライアント認証の例
アクセストークン
Kafka ブローカーとの認証に使用されるアクセストークンを直接設定できます。この場合、tokenEndpointUri
は指定しません。accessToken
プロパティーで、アクセストークンが含まれる Secret
へのリンクを指定します。
アクセストークンのみを使用した OAuth クライアント認証の例
authentication: type: oauth accessToken: secretName: my-access-token-secret key: access-token
authentication:
type: oauth
accessToken:
secretName: my-access-token-secret
key: access-token
ユーザー名およびパスワード
OAuth のユーザー名とパスワードの設定では、OAuth リソースオーナーのパスワード付与 メカニズムを使用します。このメカニズムは非推奨であり、クライアント認証情報 (ID とシークレット) を使用できない環境での統合を有効にするためにのみサポートされています。アクセス管理システムが別のアプローチをサポートしていない場合、または認証にユーザーアカウントが必要な場合は、ユーザーアカウントの使用が必要になることがあります。
典型的なアプローチは、クライアントアプリケーションを表す認可サーバーに特別なユーザーアカウントを作成することです。次に、ランダムに生成された長いパスワードと非常に限られた権限セットをアカウントに与えます。たとえば、アカウントは Kafka クラスターにのみ接続できますが、他のサービスを使用したり、ユーザーインターフェイスにログインしたりすることはできません。
最初にリフレッシュトークンメカニズムの使用を検討してください。
tokenEndpointUri
プロパティーで、認証に使用されるクライアント ID、ユーザー名、およびパスワードと共に、認可サーバーのアドレスを設定できます。OAuth クライアントは OAuth サーバーに接続し、ユーザー名、パスワード、クライアント ID、およびオプションでクライアントシークレットを使用して認証し、Kafka ブローカーでの認証に使用するアクセストークンを取得します。
passwordSecret
プロパティーで、パスワードが含まれる Secret
へのリンクを指定します。
通常、パブリック OAuth クライアントを使用して clientId
も設定する必要があります。機密 OAuth クライアントを使用している場合は、clientSecret
も設定する必要があります。
パブリッククライアントでのユーザー名とパスワードを使用した OAuth クライアント認証の例
機密クライアントでのユーザー名とパスワードを使用した OAuth クライアント認証の例
必要に応じて、scope
と audience
を指定できます。
TLS
HTTPS プロトコルを使用して OAuth サーバーにアクセスする場合、信頼される認証局によって署名された証明書を使用し、そのホスト名が証明書に記載されている限り、追加の設定は必要ありません。
OAuth サーバーが自己署名証明書を使用している場合、または信頼されていない認証局によって署名されている場合は、カスタムリソースで信頼済み証明書の一覧を設定できます。tlsTrustedCertificates
プロパティーには、証明書が保存されるキーの名前を持つシークレットの一覧が含まれます。証明書は X509 形式で保存する必要があります。
提供される TLS 証明書の例
OAuth クライアントはデフォルトで、OAuth サーバーのホスト名が、証明書サブジェクトまたは別の DNS 名のいずれかと一致することを確認します。必要でない場合は、ホスト名の検証を無効にできます。
無効にされた TLS ホスト名の検証例
76.1. KafkaClientAuthenticationOAuth スキーマプロパティー リンクのコピーリンクがクリップボードにコピーされました!
type
プロパティーは、KafkaClientAuthenticationOAuth
タイプと、KafkaClientAuthenticationTls
, KafkaClientAuthenticationScramSha256
, KafkaClientAuthenticationScramSha512
, KafkaClientAuthenticationPlain
の使用を区別するための識別子です。KafkaClientAuthenticationOAuth
タイプには oauth
の値が必要です。
プロパティー | 説明 |
---|---|
accessToken | 認可サーバーから取得したアクセストークンが含まれる OpenShift シークレットへのリンク。 |
accessTokenIsJwt |
アクセストークンを JWT として処理すべきかどうかを設定します。認可サーバーが不透明なトークンを返す場合は、 |
boolean | |
audience |
認可サーバーに対して認証を行うときに使用する OAuth オーディエンス。一部の認可サーバーでは、オーディエンスを明示的に設定する必要があります。許可される値は、認可サーバーの設定によります。デフォルトでは、トークンエンドポイントリクエストを実行する場合は |
string | |
clientId | Kafka クライアントが OAuth サーバーに対する認証に使用し、トークンエンドポイント URI を使用することができる OAuth クライアント ID。 |
string | |
clientSecret | Kafka クライアントが OAuth サーバーに対する認証に使用し、トークンエンドポイント URI を使用することができる OAuth クライアントシークレットが含まれる OpenShift シークレットへのリンク。 |
connectTimeoutSeconds | 認可サーバーへの接続時のタイムアウト (秒単位)。設定しない場合は、実際の接続タイムアウトは 60 秒になります。 |
integer | |
disableTlsHostnameVerification |
TLS ホスト名の検証を有効または無効にします。デフォルト値は |
boolean | |
enableMetrics |
OAuth メトリックを有効または無効にします。デフォルト値は |
boolean | |
httpRetries | 最初の HTTP リクエストが失敗した場合に試行する最大再試行回数。設定されていない場合、デフォルトでは再試行は行われません。 |
integer | |
httpRetryPauseMs | 失敗した HTTP リクエストを再試行するまでの一時停止。設定されていない場合、デフォルトでは一時停止せず、ただちにリクエストを繰り返します。 |
integer | |
maxTokenExpirySeconds | アクセストークンの有効期間を指定の秒数に設定または制限します。これは、認可サーバーが不透明なトークンを返す場合に設定する必要があります。 |
integer | |
passwordSecret |
パスワードを保持する |
readTimeoutSeconds | 認可サーバーへの接続時の読み取りタイムアウト (秒単位)。設定しない場合は、実際の読み取りタイムアウトは 60 秒になります。 |
integer | |
refreshToken | 認可サーバーからアクセストークンを取得するために使用できる更新トークンが含まれる OpenShift シークレットへのリンク。 |
scope |
認可サーバーに対して認証を行うときに使用する OAuth スコープ。一部の認可サーバーでこれを設定する必要があります。許可される値は、認可サーバーの設定によります。デフォルトでは、トークンエンドポイントリクエストを実行する場合は |
string | |
tlsTrustedCertificates | OAuth サーバーへの TLS 接続の信頼済み証明書。 |
| |
tokenEndpointUri | 認可サーバートークンエンドポイント URI。 |
string | |
type |
|
string | |
username | 認証に使用されるユーザー名。 |
string |