Layanan Log Sederhana memungkinkan Anda menyematkan halaman konsol, seperti halaman kueri dan analisis serta halaman dashboard, ke dalam aplikasi web yang dikelola sendiri. Dengan cara ini, Anda dapat membagikan halaman tersebut kepada pengguna lain, sehingga mereka dapat melihat data log Anda dalam mode akses tanpa kata sandi. URL dari halaman yang dibagikan disebut sebagai URL bebas login.
Cara kerjanya
Untuk mengizinkan pengguna melihat data log Anda dalam mode tanpa kata sandi, kami merekomendasikan agar Anda menggunakan solusi Tiket. Untuk informasi lebih lanjut, lihat Sematkan Halaman Konsol dan Bagikan Data Log (Versi Baru).
Layanan Single Sign-On (SSO) (signin.aliyun.com) yang disediakan oleh Resource Access Management (RAM) mendukung integrasi token login ke dalam URL login. Saat pengguna mengakses URL bebas login, SSO dipanggil terlebih dahulu. Jika SSO mendeteksi token login yang valid, pengguna akan diarahkan ke halaman yang ditentukan. Dengan cara ini, pengguna dapat melihat data log pada halaman dalam mode akses tanpa kata sandi. Gambar berikut menunjukkan proses akses.

Seorang pengguna mengakses aplikasi web Anda.
Server web mengakses Security Token Service (STS) untuk mendapatkan token keamanan dengan menggunakan pasangan AccessKey dari pengguna RAM yang diperlukan.
STS mengembalikan token keamanan.
Server web mengakses SSO untuk mendapatkan token login dengan menggunakan token keamanan.
SSO mengembalikan token login.
Server web membuat URL bebas login untuk halaman konsol Layanan Log Sederhana dan mengembalikan URL tersebut ke klien. Klien menggunakan URL bebas login untuk mengakses halaman tersebut.
Tindakan pencegahan
Sebelum menggunakan fitur penyematan halaman konsol, perhatikan hal-hal berikut:
Fitur ini hanya mendukung akses berbasis Peran RAM.
Token yang dihasilkan oleh STS adalah kredensial sementara. Anda dapat menggunakan kredensial tersebut untuk mengakses URL bebas login dari halaman yang disematkan hanya sekali di browser Anda. Jika Anda menggunakan kredensial tersebut untuk mengakses URL secara berulang, kesalahan terkait SigninToken akan dilaporkan.
Logika verifikasi digunakan di backend. Kami merekomendasikan agar Anda membuat ulang URL bebas login dari halaman yang disematkan 5 menit sebelum SigninToken Anda kedaluwarsa. Jika Anda tidak membuat ulang URL bebas login tepat waktu, akses Anda ke halaman yang disematkan menjadi tidak valid setelah SigninToken Anda kedaluwarsa, dan kesalahan terkait SigninToken akan dilaporkan.
Anda hanya dapat menyematkan halaman kueri dan analisis lengkap, halaman kueri, dan halaman dashboard. Anda tidak dapat menyematkan halaman peringatan.
Prosedur
Siapkan URL yang akan dibagikan
Dapatkan URL dari halaman kueri dan analisis atau halaman dashboard yang ingin Anda bagikan.
CatatanAnda hanya dapat menyematkan halaman kueri dan analisis lengkap, halaman kueri, dan halaman dashboard. Anda tidak dapat menyematkan halaman peringatan.
Halaman kueri dan analisis lengkap:
https://sls.console.alibabacloud.com/lognext/project/<Nama Proyek>/logsearch/<Nama Logstore>?slsRegion=<Wilayah proyek>&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=trueHalaman kueri:
https://sls.console.alibabacloud.com/lognext/project/<Nama Proyek>/logsearch/<Nama Logstore>?slsRegion=<Wilayah proyek>&isShare=true&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=true
Halaman dashboard:
https://sls.console.alibabacloud.com/lognext/project/<Nama Proyek>/dashboard/<ID Dashboard>?slsRegion=<Wilayah proyek>&isShare=true&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=trueCatatanID Dashboard yang disebutkan sebelumnya hanya muncul di URL halaman dashboard. ID tersebut bukan nama yang muncul di dashboard.
Halaman Observabilitas Penuh
Dalam contoh ini, halaman Analisis Jejak digunakan. Untuk informasi lebih lanjut, lihat Sematkan Halaman Observabilitas Penuh.
https://sls4servims.console.alibabacloud.com/lognext/app/observability/trace/<Nama Proyek>/<ID instance Observabilitas Penuh>?resource=/trace/<ID instance Observabilitas Penuh>/explorer&hideTopbar=true&isShare=true
Ganti alamat host di URL dengan
sls4servims.console.alibabacloud.com.Sebagai contoh, Anda dapat membagikan halaman dashboard yang dapat diakses menggunakan URL berikut di konsol Layanan Log Sederhana:
https://sls.console.alibabacloud.com/lognext/project/project_name/dashboard/dashboard-1651116703628-54041Ganti alamat host
sls.console.alibabacloud.comdengansls4servims.console.alibabacloud.comuntuk menghasilkan URL yang akan dibagikan berikut:https://sls4servims.console.alibabacloud.com/lognext/project/project_name/dashboard/dashboard-1651116703628-54041
Buat Peran RAM dan Pengguna RAM
Buat Peran RAM dan berikan izin untuk mengakses halaman yang ingin Anda bagikan, seperti halaman dashboard. Buat Pengguna RAM dan berikan izin untuk mengasumsikan Peran RAM.
Buat Peran RAM
Buat Peran RAM yang dapat diasumsikan oleh Pengguna RAM atau Peran RAM dalam akun Alibaba Cloud saat ini. Untuk informasi lebih lanjut, lihat Gunakan Peran RAM untuk Mengakses Sumber Daya Lintas Akun Alibaba Cloud.
Berikan Peran RAM izin untuk mengakses URL halaman yang ingin Anda bagikan. Sebagai contoh, Anda dapat memberikan izin baca-saja pada Layanan Log Sederhana.
{ "Version": "1", "Statement": [ { "Action": [ "log:Get*", "log:List*", "log:Query*" ], "Resource": "*", "Effect": "Allow" } ] }Catat Nama Sumber Daya Alibaba Cloud (ARN) dari Peran RAM dalam format
acs:ram::137******44:role/role-name.
Buat Pengguna RAM
Buat Pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Otorisasi Pengguna RAM untuk Mengakses Layanan Log Sederhana. Pilih OpenAPI Access saat Anda membuat Pengguna RAM. Setelah Pengguna RAM dibuat, catat pasangan AccessKey dari pengguna tersebut.
Berikan Pengguna RAM izin untuk mengasumsikan Peran RAM.
CatatanUntuk
Resource, masukkan ARN dari Peran RAM.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram::137******44:role/role-name" } ] }
Hasilkan URL bebas login
Hasilkan URL bebas login dari halaman konsol yang ingin Anda bagikan untuk mengizinkan akses tanpa kata sandi ke halaman konsol. Untuk informasi lebih lanjut tentang kode sampel yang ditulis dalam bahasa pemrograman seperti Java dan Python, lihat Kode Sampel.
Gunakan
AccessKeydari Pengguna RAM untuk mengakses STS dan mendapatkan token keamanan. Anda dapat menentukan periode validitas token berdasarkan kebutuhan bisnis Anda. Contoh kode:DefaultProfile.addEndpoint("", "", "Sts", stsHost); IClientProfile profile = DefaultProfile.getProfile("", <AccessKeyId>, <AccessKeySecret>); DefaultAcsClient client = new DefaultAcsClient(profile); AssumeRoleRequest assumeRoleReq = new AssumeRoleRequest(); assumeRoleReq.setRoleArn(roleArn); // ARN dari Peran RAM. assumeRoleReq.setRoleSessionName(roleSession); assumeRoleReq.setMethod(MethodType.POST); assumeRoleReq.setDurationSeconds(3600L); AssumeRoleResponse assumeRoleRes = client.getAcsResponse(assumeRoleReq);Akses SSO dan dapatkan token login. Contoh berikut menunjukkan format permintaan akses. Pastikan nilai dari
TicketTypeadalahmini.http://signin.aliyun.com/federation?Action=GetSigninToken &AccessKeyId=<ID AccessKey dari pasangan AccessKey sementara yang dikembalikan oleh STS> &AccessKeySecret=<Rahasia AccessKey dari pasangan AccessKey sementara yang dikembalikan oleh STS> &SecurityToken=<Token yang dikembalikan oleh STS> &TicketType=miniData yang dikembalikan:
{ "RequestId": "02b47c77c5fd48789d23773af853e9f7_936be_1706585994094_1.229", "SigninToken": "svX6LGcBbWLExKD5hcwdLu6RsLQbv36fWZN36WhxkTXpTcDpmzs2K6X8uFvCqGsBTU4KWJMffYz2rAVbdJXHMECgUfyzS869wh2DBdFEQo3e2fJgZ5YtcMSVnoX7pterS2f7926jFvdBXVFEF54JkUCMrDAutNRv1u7ZReC7v8oQoG5UmjJBbHUyvLTn5UDDvDfNowMVyRskrZRFUKT2qAMZ4Gnc****" }Tambahkan token login ke URL yang akan dibagikan untuk menghasilkan URL bebas login.
http://signin.aliyun.com/federation?Action=Login &LoginUrl=<URL ke mana Anda dialihkan saat login gagal. Kami merekomendasikan Anda menentukan URL ke mana Anda dialihkan saat kode status HTTP 302 dikembalikan pada aplikasi yang Anda kelola sendiri. Anda harus menggunakan encodeURL untuk mentranskode URL.> &Destination=<URL yang akan dibagikan dari halaman kueri dan analisis atau halaman dashboard yang ingin Anda bagikan. Jika parameter dikonfigurasi, Anda harus menggunakan encodeURL untuk mentranskode parameter.> &SigninToken=<Token login yang diperoleh. Anda harus menggunakan encodeURL untuk mentranskode token.>
Sematkan URL bebas login sebagai iFrame
Sematkan URL bebas login ke halaman web Anda sebagai iFrame.
Pertama kali Anda mengakses URL bebas login di browser Anda, Anda dapat menguji URL tersebut. Setelah pengujian selesai, token login yang digunakan menjadi tidak valid. Anda harus membuat ulang URL bebas login.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bagikan halaman konsol</title>
</head>
<body>
<iframe width="1280" height="720" src="URL bebas login"> </iframe>
</body>
</html>Kode sampel
Untuk informasi lebih lanjut tentang kode sampel yang ditulis dalam PHP, Python, dan Go, kunjungi tautan berikut:
Contoh kode berikut menunjukkan dependensi Maven dalam Java:
<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>
FAQ
Deskripsi Masalah
Saat URL bebas login disematkan ke halaman web sebagai iFrame, kesalahan berikut dilaporkan:
Refused to frame 'https://signin.aliyun.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' *.aliyun.com"Penyebab
Untuk alasan keamanan, iFrame lintas domain tidak didukung.
Solusi
Ubah header Content-Security-Policy (CSP).
Anda dapat menentukan nama domain eksak atau nama domain wildcard dalam direktif CSP untuk mengizinkan penyematan halaman dari situs web yang ditentukan. Sebagai contoh, Anda dapat menggunakan direktif CSP berikut untuk mengizinkan penyematan halaman dari situs web
aliyun.comdan*.aliyun.com:Content-Security-Policy: frame-ancestors 'self' aliyun.com *.aliyun.com;Anda dapat menggunakan karakter wildcard (*) dalam direktif CSP untuk mengizinkan penyematan halaman dari semua situs web. Contoh:
Content-Security-Policy: frame-ancestors *;Jika Anda mengizinkan penyematan halaman dari semua situs web, risiko keamanan muncul. Kami merekomendasikan agar Anda tidak mengizinkan penyematan halaman dari semua situs web kecuali diperlukan. Untuk informasi lebih lanjut, kunjungi https://content-security-policy.com/.