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

Simple Log Service:コンソールページの埋め込みとログデータの共有

最終更新日:Aug 28, 2026

Simple Log Service では、クエリと分析ページやダッシュボードページなどのコンソールページをセルフマネージド Web アプリケーションに埋め込むことができます。これにより、ページを他のユーザーと共有でき、ユーザーはパスワードなしでログデータを表示できます。共有ページの URL は、ログイン不要な URL と呼ばれます。

仕組み

重要

ユーザーがパスワードなしでログデータを表示できるようにするには、チケットソリューションの使用を推奨します。詳細については、「コンソールの埋め込みと共有」をご参照ください。

Resource Access Management (RAM) が提供するシングルサインオン (SSO) サービス (signin.alibabacloud.com) は、ログイン URL へのログイン トークンの統合をサポートしています。ユーザーがログイン不要な URL にアクセスすると、まず SSO が呼び出されます。SSO が有効なログイン トークンを検出すると、ユーザーは指定されたページにリダイレクトされます。これにより、ユーザーはパスワードなしでページ上のログデータを表示できます。次の図に、アクセスプロセスを示します。

访问流程

  1. ユーザーが Web アプリケーションにアクセスします。

  2. Web サーバーは、必要な RAM ユーザーのアクセスキーペアを使用して Security Token Service (STS) にアクセスし、セキュリティトークンを取得します。

  3. STS はセキュリティトークンを返します。

  4. Web サーバーは、セキュリティトークンを使用して SSO にアクセスし、ログイン トークンを取得します。

  5. SSO はログイン トークンを返します。

  6. Web サーバーは、Simple Log Service コンソールのページのログイン不要な URL を作成し、その URL をクライアントに返します。クライアントは、ログイン不要な URL を使用してページにアクセスします。

注意事項

コンソールページの埋め込み機能を使用する前に、次の点にご注意ください。

  • この機能は、RAM ロールを使用したアクセスのみをサポートします。

  • STS が生成したトークンは一時的な認証情報です。この認証情報を使用してブラウザーで埋め込みページのログイン不要な URL にアクセスできるのは 1 回のみです。認証情報を繰り返し使用して URL にアクセスすると、SigninToken 関連のエラーが報告されます。

  • バックエンドでは検証ロジックが使用されます。SigninToken の有効期限が切れる 5 分前に、埋め込みページのログイン不要な URL を再生成することを推奨します。ログイン不要な URL を時間内に再生成しない場合、SigninToken の有効期限が切れた後に埋め込みページへのアクセスが無効になり、SigninToken 関連のエラーが報告されます。

  • 埋め込み可能なのは、完全なクエリと分析ページ、クエリページ、ダッシュボードページのみです。アラートページは埋め込むことができません。

手順

共有対象の URL の準備

  1. 共有したいクエリと分析ページまたはダッシュボードページの URL を取得します。

    説明

    埋め込み可能なのは、完全なクエリと分析ページ、クエリページ、ダッシュボードページのみです。アラートページは埋め込むことができません。

    • 完全なクエリと分析ページ:

      https://sls.console.alibabacloud.com/lognext/project/<Project name>/logsearch/<Logstore name>?slsRegion=<Region of the project>&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=true
    • クエリページ:

      https://sls.console.alibabacloud.com/lognext/project/<Project name>/logsearch/<Logstore name>?slsRegion=<Region of the project>&isShare=true&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=true
    • ダッシュボードページ:

      https://sls.console.alibabacloud.com/lognext/project/<Project name>/dashboard/<Dashboard ID>?slsRegion=<Region of the project>&isShare=true&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=true
      説明

      上記の Dashboard ID は、ダッシュボードページの URL にのみ表示されます。ダッシュボードに表示される名前ではありません。

    • フルスタック可観測性ページ

      この例では、トレース分析ページを使用します。詳細については、「フルスタック可観測性の埋め込み」をご参照ください。

      https://sls4service.console.alibabacloud.com/lognext/app/observability/trace/<Project name>/<ID of a Full-stack Observability instance>?resource=/trace/<ID of a Full-stack Observability instance>/explorer&hideTopbar=true&isShare=true
  2. URL のホストアドレスを sls4service.console.alibabacloud.com に置き換えます。

    たとえば、Simple Log Service コンソールで次の URL を使用してアクセスできるダッシュボードページを共有できます。

    https://sls.console.alibabacloud.com/lognext/project/project_name/dashboard/dashboard-1651116703628-54041

    ホストアドレス sls.console.alibabacloud.com を sls4service.console.alibabacloud.com に置き換えて、次の共有対象の URL を生成します。

    https://sls4service.console.alibabacloud.com/lognext/project/project_name/dashboard/dashboard-1651116703628-54041

RAM ロールと RAM ユーザーの作成

RAM ロールを作成し、ダッシュボードページなど、共有したいページにアクセスするための権限を付与します。RAM ユーザーを作成し、RAM ロールを引き受ける権限を付与します。

RAM ロールの作成

  1. 現在の Alibaba Cloud アカウント内の RAM ユーザーまたは RAM ロールが引き受けることができる RAM ロールを作成します。詳細については、「RAM ロールを使用したクロスアカウントでのリソースアクセス」をご参照ください。

  2. 共有したいページの URL にアクセスするための権限を RAM ロールに付与します。たとえば、Simple Log Service に対する読み取り専用権限を付与できます。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "log:Get*",
                    "log:List*",
                    "log:Query*"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  3. RAM ロールの Alibaba Cloud リソースネーム (ARN) を acs:ram::137******44:role/role-name 形式で記録します。

RAM ユーザーの作成

  1. RAM ユーザーを作成します。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。RAM ユーザーを作成する際に [OpenAPI アクセス] を選択します。RAM ユーザーが作成されたら、ユーザーのアクセスキーペアを記録します。

  2. RAM ロールを引き受ける権限を RAM ユーザーに付与します。

    説明

    Resource には、RAM ロールの ARN を入力します。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": "acs:ram::137******44:role/role-name"
            }
        ]
    }

ログイン不要な URL の生成

共有したいコンソールページのログイン不要な URL を生成し、コンソールページへのパスワードなしのアクセスを許可します。Java や Python などのプログラミング言語で記述されたサンプルコードの詳細については、「サンプルコード」をご参照ください。

  1. RAM ユーザーの AccessKey を使用して STS にアクセスし、セキュリティトークンを取得します。ビジネス要件に基づいてトークンの有効期間を指定できます。サンプルコード:

    DefaultProfile.addEndpoint("", "", "Sts", stsHost);
    IClientProfile profile = DefaultProfile.getProfile("", <AccessKeyId>, <AccessKeySecret>);
    DefaultAcsClient client = new DefaultAcsClient(profile);
    AssumeRoleRequest assumeRoleReq = new AssumeRoleRequest();
    assumeRoleReq.setRoleArn(roleArn); // RAM ロールの ARN。
    assumeRoleReq.setRoleSessionName(roleSession);
    assumeRoleReq.setMethod(MethodType.POST);
    assumeRoleReq.setDurationSeconds(3600L);
    AssumeRoleResponse assumeRoleRes = client.getAcsResponse(assumeRoleReq);
  2. SSO にアクセスしてログイン トークンを取得します。次の例は、アクセスリクエストの形式を示しています。TicketType の値が mini であることを確認してください。

    http://signin.alibabacloud.com/federation?Action=GetSigninToken
                        &AccessKeyId=<The AccessKey ID of the temporary AccessKey pair that is returned by STS>
                        &AccessKeySecret=<The AccessKey secret of the temporary AccessKey pair that is returned by STS>
                        &SecurityToken=<The token that is returned by STS>
                        &TicketType=mini

    返されるデータ:

    {
        "RequestId": "02b47c77c5fd48789d23773af853e9f7_936be_1706585994094_1.229",
        "SigninToken": "svX6LGcBbWLExKD5hcwdLu6RsLQbv36fWZN36WhxkTXpTcDpmzs2K6X8uFvCqGsBTU4KWJMffYz2rAVbdJXHMECgUfyzS869wh2DBdFEQo3e2fJgZ5YtcMSVnoX7pterS2f7926jFvdBXVFEF54JkUCMrDAutNRv1u7ZReC7v8oQoG5UmjJBbHUyvLTn5UDDvDfNowMVyRskrZRFUKT2qAMZ4Gnc****"
    }
  3. ログイン トークンを共有対象の URL に追加して、ログイン不要な URL を生成します。

    http://signin.alibabacloud.com/federation?Action=Login
                                &LoginUrl=<ログインに失敗した場合のリダイレクト先 URL。自己管理型アプリケーションで HTTP ステータスコード 302 が返されたときのリダイレクト先 URL を指定することを推奨します。URL は encodeURL を使用してトランスコードする必要があります。>
                                &Destination=<共有したいクエリと分析ページまたはダッシュボードページの共有対象 URL。パラメーターが設定されている場合は、encodeURL を使用してパラメーターをトランスコードする必要があります。>
                                &SigninToken=<取得したログイン トークン。トークンは encodeURL を使用してトランスコードする必要があります。>

iFrame へのログイン不要な URL の埋め込み

ログイン不要な URL を iFrame として Web ページに埋め込みます。

重要

ブラウザーでログイン不要な URL に初めてアクセスするときに、URL をテストできます。テストが完了すると、使用されたログイン トークンは無効になります。ログイン不要な URL を再生成する必要があります。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>コンソールページの共有</title>
</head>
<body>
<iframe width="1280" height="720" src="ログイン不要 URL"></iframe>
</body>
</html>

サンプルコード

Java、PHP、Python、Go で記述されたサンプルコードの詳細については、次のリンクにアクセスしてください。

  • Java のサンプルコード

    次のサンプルコードは、Java の Maven 依存関係を示しています。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-sts</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>3.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.5</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.68.noneautotype</version>
    </dependency>
  • PHP のサンプルコード

  • Python のサンプルコード

  • Go のサンプルコード

よくある質問

  • 問題の説明

    ログイン不要な URL が iFrame として Web ページに埋め込まれると、次のエラーが報告されます。

    Refused to frame 'https://signin.alibabacloud.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' *.aliyun.com"
  • 原因

    セキュリティ上の理由から、クロスドメイン iFrame はサポートされていません。

  • 解決策

    Content-Security-Policy (CSP) ヘッダーを変更します。

    CSP ディレクティブで完全なドメイン名またはワイルドカードドメイン名を指定して、指定された Web サイトからのページの埋め込みを許可できます。たとえば、次の CSP ディレクティブを使用して、aliyun.com および *.aliyun.com の Web サイトからのページの埋め込みを許可できます。

    Content-Security-Policy: frame-ancestors 'self' aliyun.com *.aliyun.com;

    CSP ディレクティブでワイルドカード文字 (*) を使用して、すべての Web サイトからのページの埋め込みを許可できます。例:

    Content-Security-Policy: frame-ancestors *;

    すべての Web サイトからのページの埋め込みを許可すると、セキュリティリスクが生じます。必要でない限り、すべての Web サイトからのページの埋め込みを許可しないことを推奨します。詳細については、「コンテンツセキュリティポリシーのリファレンス」をご参照ください。