[otelcol-contrib] 使用 BasicAuth 設定 Basic 認證

概要

多數情況,在將遙測資料寄送至後端平台時,會需要有使用者認證的 header,而 BasicAuth 擴充套件提供了快速設定 server 與 client 認證的功能。

注意:此套件目前不支援 http 連線。

另一個注意:server 與 client 不能同時定義於同個區塊,須建立為兩不同區塊。

部署方法

為 receiver 設定帳號密碼

  • 在 receiver 處加入擴充套件

extensions:
  # 於擴充套件區塊建立 basicauth 擴充
  basicauth/server:
    # 為 receiver 設定 htpassed
    htpasswd: 
      # 使用檔案設定
      file: .htpasswd
      # 直接由文字設定
      inline: |
        ${env:BASIC_AUTH_USERNAME}:${env:BASIC_AUTH_PASSWORD}

receivers:
  otlp:
    protocols:
      http:
        # 宣告在此 receiver 使用建立好的擴充套件
        auth:
          authenticator: basicauth/server
processors:

exporters:

service:
  # 記得在 service 區塊加入建立好的擴充套件
  extensions: [basicauth/server]
  pipelines:
    traces:
      receivers: [otlp]
      processors: []
      exporters: [otlp]

注意:若後端平台也使用 basicauth,可能使 request 發生衝突,此時不建議於此設定。

為 exporter 設定帳號密碼

  • 於 exporter 處加入擴充套件

extensions:
  # 於擴充套件區塊建立 basicauth 擴充
  basicauth/client:
    # 設定為 client 端認證
    client_auth: 
      # 填入要使用的帳號密碼即可
      username: username
      password: password

receivers:
  otlp:

processors:

exporters:
  otlp:
    auth:
      # 宣告在此 receiver 使用建立好的擴充套件
      authenticator: basicauth/client

service:
  # 記得在 service 區塊加入建立好的擴充套件
  extensions: [basicauth/client]
  pipelines:
    traces:
      receivers: [otlp]
      processors: []
      exporters: [otlp]

補充

若要在 http 環境使用 basic 認證

可以手動加入編碼過的 header

  • 手動編碼

>>> echo -n <user>:<password> | base64 -w 0
ZGV2LXRlbmFudDpaR1YyTFhKbFlXUXR0000000000GNHOXNhV041TFhSbGMzUXRkRzl0000000000TZmRE5jUlMxNU16RmZOM0ZjTUNFNWV6UTROU3RzSlRjdA==
  • 自行加入 header

exporters:
    otlp:
    endpoint:
    tls:
        insecure: true
    headers:
        # 剛剛編碼好的帳密
        # 使用 Basic 認證
        Authorization: "Basic ZGV2LXRlbmFudDpaR1YyTFhKbFlXUXR0000000000GNHOXNhV041TFhSbGMzUXRkRzl0000000000TZmRE5jUlMxNU16RmZOM0ZjTUNFNWV6UTROU3RzSlRjdA=="

無法找到 BasicAuth 擴充套件

請確認你是否使用社群版本 otelcol-contrib,官方版本並無提供此擴充套件。

參考

Last updated