すべてのプロダクト
Search
ドキュメントセンター

Managed Service for Grafana:API キーを使用して Grafana ダッシュボードを共有する

最終更新日:May 07, 2026

API キーを使用して、ログイン不要の共有可能なダッシュボードリンクを生成します。

背景情報

  • ネイティブ Grafana では、ダッシュボードに直接アクセスするにはスナップショット機能または匿名アクセスが必要です。スナップショットは静的なデータコピーであり、時間経過による更新内容は反映されません。一方、匿名アクセスは IP アローリストと併用しない場合、セキュリティリスクが生じる可能性があります。Managed Service for Grafana では、API キー認証を使用して、ログイン不要の共有可能なダッシュボードリンクを生成できます。

    • API キーが認証を処理するため、リンクを所有しているユーザーはログインせずに指定されたダッシュボードにアクセスできます。

  • Grafana 10.0.x 以降では、API キーはサービスアカウントトークンに置き換えられています。詳細については、「Service accounts」をご参照ください。

ステップ 1:Grafana パラメーターの設定

  1. Managed Service for Grafana コンソールにログインします。左側のナビゲーションウィンドウで、ワークスペース管理 をクリックします。

  2. ワークスペース管理 ページで、管理対象のワークスペース ID をクリックします。

  3. 左側のナビゲーションウィンドウで、パラメーターの設定 をクリックします。

  4. 左側のパラメーターリストで aliyun を選択し、パラメーターの変更 をクリックします。

  5. api_key_sharetrue に設定し、保存して有効にする をクリックします。

    image

  6. オプション: iFrame にコンテンツを埋め込む場合は、以下のパラメーターを設定します。

    • クロスドメイン埋め込みの場合

      ドメインは HTTPS を使用する必要があります。security セクションで、以下の 3 つのパラメーターを変更します。

      allow_embedding=true
      cookie_samesite=none
      cookie_secure=true

      跨域情况参数修改

    • 同一ドメイン埋め込みの場合

      security セクションで、allow_embedding パラメーターを true に設定します。

    • 別の Grafana インスタンスに iFrame を埋め込む場合は、そのインスタンスの panels パラメーターを変更します。

      enable_alpha = true
      disable_sanitize_html = true

ステップ 2:API キーの作成

API キーの作成手順は、Grafana 9.0.x と 10.0.x で異なります。ご利用の Grafana バージョンを確認し、適切な手順に従ってください。

Grafana 9.0.x から 10.0.x にアップグレードした場合、既存の API キーは 管理 > api keys ページに引き続き表示されます。「サービスアカウントに移行」をクリックして、それらをサービスアカウントに移行できます。移行後、api keys ページは非表示になりますが、元の API キーは引き続き機能します。

Grafana 9.0.x

  1. Managed Service for Grafana コンソールにログインします。左側のナビゲーションウィンドウで、ワークスペース管理 をクリックします。

  2. ワークスペース管理 ページで、管理対象のワークスペースを検索し、URL 列の URL をクリックして Grafana に移動します。

    説明

    Grafana の管理者アカウントおよびワークスペース作成時に設定したパスワードを使用して Grafana にログインできます。また、「Alibaba Cloud でサインイン」をクリックして、現在の Alibaba Cloud アカウントで Grafana にログインすることもできます。

  3. Grafana ホームページの左上隅にある image アイコンをクリックします。

  4. Grafana の左側ナビゲーションウィンドウで、API キー を選択します。

    説明

    このページにアクセスするには管理者権限が必要です。

  5. 新規 API キー または API キーの追加 をクリックし、パラメーターを設定します。

    パラメーター

    説明

    キー名

    API キーの一意な名前を指定します。

    ロール

    Viewer を選択します。

    生存時間

    有効期間を指定します。例:60s(60 秒)、10m(10 分)、1d(1 日)。

  6. 追加 をクリックします。表示されるダイアログボックスから API キーをコピーして保存してください。

    重要

    API キーは一度しか表示されません。ダイアログボックスを閉じた後は再取得できないため、安全な場所に保存してください。

    API Key值

Grafana 10.0.x

  1. Managed Service for Grafana コンソールにログインします。左側のナビゲーションウィンドウで、ワークスペース管理 をクリックします。

  2. ワークスペース管理 ページで、管理対象のワークスペースを検索し、URL 列の URL をクリックして Grafana に移動します。

    説明

    Grafana の管理者アカウントおよびワークスペース作成時に設定したパスワードを使用して Grafana にログインできます。また、「Alibaba Cloud でサインイン」をクリックして、現在の Alibaba Cloud アカウントで Grafana にログインすることもできます。

  3. Grafana ホームページの左上隅にある image アイコンをクリックします。

  4. Grafana の左側ナビゲーションウィンドウで、管理 > サービスアカウント を選択します。

    重要
    • このページにアクセスするには管理者権限が必要です。

    • 各サービスアカウントは、1 つのユーザークォータを消費します。

  5. サービスアカウントの追加 をクリックし、パラメーターを設定してから 作成 をクリックします。

    パラメーター

    説明

    表示名

    サービスアカウントの一意な名前を指定します。

    ロール

    Viewer を選択します。

  6. ページ右側で サービスアカウントトークンの追加 をクリックし、パラメーターを設定します。

    パラメーター

    説明

    表示名

    トークンの一意な名前を指定します。

    有効期限

    トークンの有効期間を指定します。

    • 有効期限なし:トークンは無期限で有効です。

    • 有効期限の設定:有効期限日を指定します。

    有効期限日

    このパラメーターは、[有効期限の設定] を選択した場合に必須です。

  1. トークンの生成 をクリックします。表示されるダイアログボックスで、クリップボードにコピーして閉じる をクリックします。

重要

トークンは一度しか表示されません。ダイアログボックスを閉じた後は再取得できないため、安全な場所に保存してください。

ステップ 3:共有リンクの生成

Grafana 9.0.x

  1. Grafana で、共有したいダッシュボードに移動します。

  2. 分享图标 アイコンをクリックします。リンク タブで、共有リンクを取得します。

    Grafana大盘分享链接

  3. リンクの末尾に &aliyun_api_key=<API key value> を追加します。<API key value> は、ステップ 2 で取得した API キーに置き換えてください。

    https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJr****WkIwNnN2c0RTSD******
  4. API キーを含む共有リンクを使用して、ログインせずに Grafana ダッシュボードにアクセスできます。

Grafana 10.0.x

  1. Grafana で、共有したいダッシュボードに移動します。

  2. 分享图标 アイコンをクリックします。リンク タブで、共有リンクを取得します。

  3. リンクの末尾に &aliyun_api_key=<API key value> を追加します。<API key value> は、ステップ 2 で取得したサービスアカウントトークンに置き換えてください。

    https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJrIjoiWkIwNnN2c0RTSD******
  4. サービスアカウントトークンを含む共有リンクを使用して、ログインせずに Grafana ダッシュボードにアクセスできます。

ステップ 4: セキュアな署名付きリンクの生成(オプション)

ステップ 3:共有リンクの生成 で生成される基本的な共有リンクは、URL に生の API キーを埋め込みます。キーの公開によるセキュリティリスクを回避するため、定期的にキーをローテーションする必要があります。より安全な代替手段として、生のキーではなく時間制限付きの署名を使用する署名付き共有リンクを生成できます。このステップでは、Grafana 9.0.x の API キーおよび Grafana 10.0.x のサービスアカウントトークン向けの署名付きリンクの生成方法について説明します。

開始前に、api_key_share_version パラメーターを v2 に設定して、v2 署名付きリンク機能を有効化する必要があります。

  1. Managed Service for Grafana コンソールにログインします。左側のナビゲーションウィンドウで、ワークスペース管理 をクリックします。

  2. ワークスペース管理 ページで、対象のワークスペース ID をクリックします。左側のナビゲーションウィンドウで、パラメーターの設定 をクリックします。

  3. api_key_share_version パラメーターを v2 に設定し、保存して有効にする をクリックします。14.jpg

API キー(Grafana 9.0.x)

  1. ステップ 2:API キーの作成 で取得した API キーを Base64 デコードします。

    Base64 は、8 ビットの バイト を送信するために使用される一般的なエンコーディング方式です。64 文字の印刷可能な文字を使用して バイナリ データを表現します。

    • base64 などのオンラインツールを使用してキーをデコードできます。

    • Java でデコードします。

      package main;
      
      import java.util.Base64;
      
      public class Base64Example{
          public static void main(String[] args) {
              String apiKey = "eyJr****REpzZGYzd2JIa0N3ekgyWjlWWmhrSTM5bWdGT2hGSmwiLCJuIjoidGVzdDEiLCJpZCI6MX0=";
              String decodeKey = new String(Base64.getDecoder().decode(apiKey));
              System.out.println(decodeKey);
          }
      }

      出力結果:

      {"k":"DJsd****HkCwzH2Z9VZhkI39mgFOhFJl","n":"test1","id":1}
    • Go でデコードします。

      package main
      
      import "fmt"
      import "encoding/base64"
      
      func main() {
      	apiKey := "eyJr****REpzZGYzd2JIa0N3ekgyWjlWWmhrSTM5bWdGT2hGSmwiLCJuIjoidGVzdDEiLCJpZCI6MX0="
      	decodeKey, err := base64.StdEncoding.DecodeString(apiKey)
      	if err != nil {
      		fmt.Println(err.Error())
      		return
      	}
      	fmt.Println(string(decodeKey))
      }

      出力結果:

      {"k":"DJsd****HkCwzH2Z9VZhkI39mgFOhFJl","n":"test1","id":1}
  2. デコードされた API キーの k 値を PBKDF2 関数で暗号化します。

    PBKDF2(Password-Based Key Derivation Function 2)は、ブルートフォース攻撃に対する脆弱性を低減する鍵導出関数です。入力パスワードとソルトを暗号学的ハッシュ関数に適用し、多数回繰り返すことで、鍵導出を計算コストの高い処理にします。

    以下の表は、暗号化パラメーターを示しています。

    パラメーター

    説明

    Salt

    API キーの名前(デコードされた JSON オブジェクトの n 値)。この例では test1 です。

    反復回数

    10000

    出力長(バイト)

    50

    鍵サイズ(ビット)

    256

    出力形式

    16 進数

    • df2 などのオンライン PBKDF2 ツールを使用できます。

    • Java で暗号化します。

      package main;
      
      import javax.crypto.SecretKeyFactory;
      import java.security.GeneralSecurityException;
      import javax.crypto.spec.PBEKeySpec;
      import java.security.spec.KeySpec;
      
      public class PBKDFExapmle {
          public static void main(String[] args) {
              String password = "DJsd****HkCwzH2Z9VZhkI39mgFOhFJl";
              String salt = "test1";
              int iterationCount = 10000;
              int outputLength = 50 * 8;
      
              try {
                  KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), iterationCount, outputLength);
                  SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
                  byte[] keyBytes = skf.generateSecret(spec).getEncoded();
                  System.out.println(bytesToHex(keyBytes));
              } catch (GeneralSecurityException e) {
                  e.printStackTrace();
              }
          }
      
          private static String bytesToHex(byte[] bytes) {
              StringBuilder hexString = new StringBuilder();
              for (byte b : bytes) {
                  String hex = Integer.toHexString(0xff & b);
                  if (hex.length() == 1) {
                      hexString.append('0');
                  }
                  hexString.append(hex);
              }
              return hexString.toString();
          }
      }
      

      出力結果(PBKDF2 パスワード):

      1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****
    • Go で暗号化します。

      package main
      
      import "fmt"
      import "encoding/hex"
      import "crypto/sha256"
      import "golang.org/x/crypto/pbkdf2"
      
      func main() {
          password:="DJsd****HkCwzH2Z9VZhkI39mgFOhFJl"
          salt="test1"
          newPasswd := pbkdf2.Key([]byte(password), []byte(salt), 10000, 50, sha256.New)
      	encodePassword:= hex.EncodeToString(newPasswd)
      	fmt.Println(encodePassword)
      }

      出力結果(PBKDF2 パスワード):

      1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****
  3. 署名対象文字列を生成し、その MD5 ハッシュを計算します。

    MD5(Message-Digest)ダイジェストアルゴリズム は、128 ビット(16 バイト)の ハッシュ値 を生成する広く使用されている 暗号学的ハッシュ関数 であり、情報伝送 の整合性を保証します。

    PBKDF2 パスワード、アンダースコア文字 (_)、および現在の UNIX タイムスタンプ(秒単位)を連結して署名対象文字列を構築します。

    例:

    PBKDF2 パスワード:1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****

    現在のシステム時刻:2024-09-20 17:12:13(UNIX タイムスタンプ:1726823533

    署名対象の完全な文字列:1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****_1726823533

    MD5 署名は複数の方法で生成できます。

    • MD5 などのオンライン MD5 ツールを使用します。

    • Java を使用して MD5 署名を生成します。

      package main;
      
      import java.security.MessageDigest;
      
      
      public class MD5 {
      
          public static void main(String[] args) {
              String pbkdfPassword = "1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****";
              long timeSeconds=System.currentTimeMillis()/1000;
              String key=pbkdfPassword+"_"+timeSeconds;
              System.out.println(MD5.getMD5String(key,"UTF-8"));
          }
      
          
          public static String getMD5String(String str, String charset) {
              try {
                  MessageDigest messageDigest = MessageDigest.getInstance("MD5");
                  messageDigest.reset();
                  messageDigest.update(str.getBytes(charset));
                  byte[] byteArray = messageDigest.digest();
      
                  StringBuffer md5StrBuff = new StringBuffer();
      
                  for (int i = 0; i < byteArray.length; i++) {
                      if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
                          md5StrBuff.append("0").append(
                              Integer.toHexString(0xFF & byteArray[i]));
                      } else {
                          md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
                      }
                  }
                  return md5StrBuff.toString().toLowerCase();
              } catch (Exception e) {
                  e.printStackTrace();
                  throw new RuntimeException("MD5 error:"+e.getMessage());
              }
          }
      }
      
    • Go を使用して MD5 署名を生成します。

      package main
       
      import (
          "crypto/md5"
          "encoding/hex"
          "fmt"
          "io"
          "time"
          "strconv"
      )
       
      func main() {
          // The string for which to calculate the MD5 hash
          pbkdfPassword := "1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****"
          timeSeconds:= time.Now().Unix()
          key:=pbkdfPassword+"_"+strconv.FormatInt(timeSeconds, 10)
       
          // Calculate the MD5 hash of the string
          hash := md5.New()
          io.WriteString(hash, key)
          md5Str := hash.Sum(nil)
       
          // Convert the binary MD5 hash to a hexadecimal string
          md5StrHex := hex.EncodeToString(md5Str)
       
          fmt.Println("MD5 of", key, "is", md5StrHex)
      }
  4. 生成された署名およびその他のパラメーターを追加して、最終的な署名付きリンクを構築します。

    パラメーター:

    パラメーター

    説明

    aliyun_api_key_sign

    タイムスタンプに基づいて変化する MD5 署名。

    c3bf89b867cc88df72d507edc4d1****

    aliyun_api_key_timestamp

    署名に使用する UNIX タイムスタンプ。このタイムスタンプとサーバー時刻の差が 1 分を超えると、署名は無効になります。

    1726823533

    aliyun_api_key_name

    API キーの名前。

    test1

    aliyun_api_key_org_id

    API キーが属する組織の ID。

    1

    aliyun_api_key_expire_seconds

    署名付きリンクにアクセスしたユーザーのセッション有効期間(秒単位)。

    デフォルト:3600

    URL の例:

    https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key_sign=c3bf89b867cc88df72d507edc4d1****&aliyun_api_key_timestamp=1726823533&aliyun_api_key_name=test1&aliyun_api_key_org_id=1

    これにより、API キーを公開せずにセキュアでログイン不要な Grafana リンクをプログラムで生成できるようになります。

サービスアカウントトークン(Grafana 10.0.x)

  1. ステップ 2:API キーの作成 で取得したサービスアカウントトークンを分割し、シークレット部分を PBKDF2 で暗号化します。

    サービスアカウントトークンをアンダースコア文字 (_) で分割します。

    # Example service account token:
    Token: glsa_yV9HAOVCjNKkvKoLMiypOc5T0Oov****_4f5ff3ce
    # After splitting:
    Prefix: glsa
    Secret: yV9HAOVCjNKkvKoLMiypOc5T0Oov****
    Salt: 4f5ff3ce

    以下の表は、暗号化パラメーターを示しています。

    パラメーター

    説明

    Salt

    サービスアカウントトークンのサフィックス。この例では 4f5ff3ce です。

    反復回数

    10000

    出力長(バイト)

    50

    鍵サイズ(ビット)

    256

    出力形式

    16 進数

    • charsetpbkdf2 などのオンライン PBKDF2 ツールを使用できます。

    • Java で暗号化します。

      package main
      
      import javax.crypto.SecretKeyFactory;
      import java.security.GeneralSecurityException;
      import javax.crypto.spec.PBEKeySpec;
      import java.security.spec.KeySpec;
      
      public class PBKDFExapmle {
          public static void main(String[] args) {
              String password = "yV9H****jNKkvKoLMiypOc5T0OovHXPV";
              String salt = "4f5ff3ce";
              int iterationCount = 10000;
              int outputLength = 50 * 8;
      
              try {
                  KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), iterationCount, outputLength);
                  SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
                  byte[] keyBytes = skf.generateSecret(spec).getEncoded();
                  System.out.println(bytesToHex(keyBytes));
              } catch (GeneralSecurityException e) {
                  e.printStackTrace();
              }
          }
      
          private static String bytesToHex(byte[] bytes) {
              StringBuilder hexString = new StringBuilder();
              for (byte b : bytes) {
                  String hex = Integer.toHexString(0xff & b);
                  if (hex.length() == 1) {
                      hexString.append('0');
                  }
                  hexString.append(hex);
              }
              return hexString.toString();
          }
      }
      

      出力結果(PBKDF2 パスワード):

      c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****
    • Go で暗号化します。

      package main
      
      import "fmt"
      import "encoding/hex"
      import "crypto/sha256"
      import "golang.org/x/crypto/pbkdf2"
      
      func main() {
          password:="yV9H****jNKkvKoLMiypOc5T0OovHXPV"
          salt:="4f5ff3ce"
          newPasswd := pbkdf2.Key([]byte(password), []byte(salt), 10000, 50, sha256.New)
      	encodePassword:= hex.EncodeToString(newPasswd)
      	fmt.Println(encodePassword)
      }

      出力結果(PBKDF2 パスワード):

      c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****
  2. 署名対象文字列を生成し、その MD5 ハッシュを計算します。

    MD5 Message-ダイジェストアルゴリズム は、128 ビット(16 バイト)の ハッシュ値 を生成する広く使用されている 暗号学的ハッシュ関数 であり、情報伝送 の完全性と一貫性を保証します。

    PBKDF2 パスワード、アンダースコア文字 (_)、および現在の UNIX タイムスタンプ(秒単位)を連結して署名対象文字列を構築します。

    例:

    PBKDF2 パスワード:c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****

    現在のシステム時刻:2024-09-20 17:12:13(UNIX タイムスタンプ:1726823533

    署名対象の完全な文字列:c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****_1726823533

    MD5 署名は複数の方法で生成できます。

    • MD5 などのオンライン MD5 ツールを使用します。

    • Java を使用して MD5 署名を生成します。

      package main;
      
      import java.security.MessageDigest;
      
      
      public class MD5 {
      
          public static void main(String[] args) {
              String pbkdfPassword = "c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****";
              long timeSeconds=System.currentTimeMillis()/1000;
              String key=pbkdfPassword+"_"+timeSeconds;
              System.out.println(MD5.getMD5String(key,"UTF-8"));
          }
      
          
          public static String getMD5String(String str, String charset) {
              try {
                  MessageDigest messageDigest = MessageDigest.getInstance("MD5");
                  messageDigest.reset();
                  messageDigest.update(str.getBytes(charset));
                  byte[] byteArray = messageDigest.digest();
      
                  StringBuffer md5StrBuff = new StringBuffer();
      
                  for (int i = 0; i < byteArray.length; i++) {
                      if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
                          md5StrBuff.append("0").append(
                              Integer.toHexString(0xFF & byteArray[i]));
                      } else {
                          md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
                      }
                  }
                  return md5StrBuff.toString().toLowerCase();
              } catch (Exception e) {
                  e.printStackTrace();
                  throw new RuntimeException("MD5 error:"+e.getMessage());
              }
          }
      }
      
    • Go を使用して MD5 署名を生成します。

      package main
       
      import (
          "crypto/md5"
          "encoding/hex"
          "fmt"
          "io"
          "time"
          "strconv"
      )
       
      func main() {
          // The string for which to calculate the MD5 hash
          pbkdfPassword := "c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****"
          timeSeconds:= time.Now().Unix()
          key:=pbkdfPassword+"_"+strconv.FormatInt(timeSeconds, 10)
       
          // Calculate the MD5 hash of the string
          hash := md5.New()
          io.WriteString(hash, key)
          md5Str := hash.Sum(nil)
       
          // Convert the binary MD5 hash to a hexadecimal string
          md5StrHex := hex.EncodeToString(md5Str)
       
          fmt.Println("MD5 of", key, "is", md5StrHex)
      }
  3. 生成された署名およびその他のパラメーターを追加して、最終的な署名付きリンクを構築します。

    パラメーター:

    パラメーター

    説明

    aliyun_api_key_sign

    タイムスタンプに基づいて変化する MD5 署名。

    c3bf89b867cc88df72d507edc4d1****

    aliyun_api_key_timestamp

    署名に使用する UNIX タイムスタンプ。このタイムスタンプとサーバー時刻の差が 1 分を超えると、署名は無効になります。

    1726823533

    aliyun_api_key_name

    サービスアカウントトークンの名前。

    sa-1-******-*******-75c7-41ae-94da-*********

    aliyun_api_key_org_id

    サービスアカウントトークンが属する組織の ID。

    1

    aliyun_api_key_expire_seconds

    署名付きリンクにアクセスしたユーザーのセッション有効期間(秒単位)。

    デフォルト:3600

    URL の例:

    https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key_sign=c3bf89b867cc88df72d507edc4d1****&aliyun_api_key_timestamp=1726823533&aliyun_api_key_name=test1&aliyun_api_key_org_id=1

    これにより、サービスアカウントトークンを公開せずにセキュアでログイン不要な Grafana リンクをプログラムで生成できるようになります。

よくある質問

  • 共有リンクを使用してダッシュボードにアクセスすると、次のエラーが表示されます:访问大盘报错1

    考えられる原因:allow_embedding パラメーターが埋め込みダッシュボード用に設定されていません。allow_embedding パラメーターを設定するには、上記のステップ 1をご参照ください。

  • ダッシュボードのデータが表示されません。无法显示大盘内容

    埋め込みダッシュボードの場合、ブラウザーが Cookie を書き込めないためにこの問題が発生する可能性があります。考えられる原因は以下のとおりです。

    • クロスドメイン:ルートドメインが異なる場合、デフォルト設定では Cookie の書き込みが防止されます。

    • cookie_samesite パラメーターが none に設定されていますが、cookie_secure パラメーターが false に設定されています。

    • ドメインが HTTP を使用しています。このプロトコルはサポートされていません。cookie_secure パラメーターは HTTP では機能しません。

    解決策:ステップ 1 に記載されているように、Grafana パラメーターを再設定してください。

  • 共有リンクを使用してダッシュボードにアクセスすると、次のエラーが表示されます:页面报错2

    考えられる原因:

    • ブラウザーバージョンが古くなっています。

    • 埋め込みダッシュボード用にブラウザーが正しく設定されていません。

      解決策:

      1. Cookie 設定を確認し、Cookie が許可されていることを確認してください。

      2. Chrome をシークレットモードで使用する場合は、すべての Cookie を許可する必要があります。

  • 埋め込みダッシュボードの場合、ログイン不要アクセスのために短期間で頻繁にローテーションする API キーと、長期有効なキーのどちらを使用すべきですか?

    設定はセキュリティ要件によって異なります。キーは 3 か月ごとにローテーションすることを推奨します。API キーが漏洩した場合は、削除することで取り消すことができます。

  • API キーの数に制限はありますか?

    Grafana のソースコードでは、キーの数にハードリミットは設けられていません。ただし、UI では 1 回のクエリで最大 100 個のキーが表示されます。管理を容易にするため、100 個を超えないように作成することを推奨します。

  • API キーは有効期限切れになると自動的に削除されますか?

    いいえ。キーの有効期限が切れても、保存されたまま非アクティブになります。非アクティブなキーが蓄積することが懸念される場合は、手動で削除できます。Grafana UI では、期限切れのキーはデフォルトで非表示になっています。「期限切れのキーを含める」をクリックすると、表示および削除が可能です。显示失效key