Layanan Log Sederhana memungkinkan Anda menyematkan halaman Konsol—seperti halaman kueri dan analisis serta halaman Dasbor—ke dalam aplikasi web yang dikelola sendiri. Dengan demikian, Anda dapat membagikan halaman tersebut kepada pengguna lain, yang kemudian dapat melihat data log Anda dalam mode akses tanpa kata sandi. URL halaman yang dibagikan ini disebut sebagai URL tanpa login.
Cara kerja
Untuk mengizinkan pengguna melihat data log Anda dalam mode tanpa kata sandi, kami merekomendasikan penggunaan solusi ticket. Untuk informasi selengkapnya, lihat Sematkan dan bagikan halaman Konsol.
Layanan Single Sign-On (SSO) (signin.alibabacloud.com) yang disediakan oleh Resource Access Management (RAM) mendukung integrasi token login ke dalam URL login. Saat pengguna mengakses URL tanpa login, SSO dipanggil terlebih dahulu. Jika SSO mendeteksi token login yang valid, pengguna akan diarahkan ke halaman yang ditentukan sehingga dapat melihat data log pada halaman tersebut dalam mode akses tanpa kata sandi. Gambar berikut menunjukkan proses akses tersebut.

Pengguna mengakses aplikasi web Anda.
Server web mengakses Security Token Service (STS) untuk mendapatkan token keamanan dengan menggunakan Pasangan Kunci Akses dari pengguna RAM yang diperlukan.
STS mengembalikan token keamanan.
Server web mengakses SSO untuk mendapatkan token login dengan menggunakan token keamanan tersebut.
SSO mengembalikan token login.
Server web membuat URL tanpa login untuk halaman Konsol Layanan Log Sederhana dan mengembalikannya ke klien. Klien kemudian menggunakan URL tanpa login tersebut untuk mengakses halaman.
Perhatian
Sebelum menggunakan fitur penyematan halaman Konsol, perhatikan hal-hal berikut:
Fitur ini hanya mendukung akses berbasis peran RAM.
Token yang dihasilkan oleh STS merupakan kredensial sementara. Anda hanya dapat menggunakannya untuk mengakses URL tanpa login dari halaman yang disematkan satu kali di browser. Jika digunakan berulang kali, error terkait SigninToken akan dilaporkan.
Logika verifikasi dijalankan di Backend. Kami merekomendasikan agar Anda membuat ulang URL tanpa login untuk halaman yang disematkan 5 menit sebelum SigninToken kedaluwarsa. Jika tidak dibuat ulang tepat waktu, akses ke halaman yang disematkan akan menjadi tidak valid setelah SigninToken kedaluwarsa, dan error terkait SigninToken akan dilaporkan.
Anda hanya dapat menyematkan halaman kueri dan analisis lengkap, halaman kueri, serta halaman Dasbor. Penyematan halaman alert tidak didukung.
Prosedur
Siapkan URL yang akan dibagikan
Dapatkan URL halaman kueri dan analisis atau halaman Dasbor yang ingin Anda bagikan.
CatatanAnda hanya dapat menyematkan halaman kueri dan analisis lengkap, halaman kueri, serta halaman Dasbor. Penyematan halaman alert tidak didukung.
Halaman kueri dan analisis lengkap:
https://sls.console.alibabacloud.com/lognext/project/<Project name>/logsearch/<Logstore name>?slsRegion=<Region of the project>&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=trueHalaman kueri:
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
Halaman Dasbor:
https://sls.console.alibabacloud.com/lognext/project/<Project name>/dashboard/<Dashboard ID>?slsRegion=<Region of the project>&isShare=true&hideTopbar=true&hideSidebar=true&ignoreTabLocalStorage=trueCatatanDashboard ID pada contoh di atas hanya muncul di URL halaman Dasbor. ID tersebut bukan nama yang ditampilkan pada Dasbor.
Halaman Full-stack Observability
Pada contoh ini, digunakan halaman Trace analysis. Untuk informasi selengkapnya, lihat Penyematan observabilitas full-stack.
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
Ganti alamat host pada URL dengan
sls4service.console.alibabacloud.com.Sebagai contoh, Anda dapat membagikan halaman Dasbor yang dapat diakses melalui 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.comdengansls4service.console.alibabacloud.comuntuk menghasilkan URL yang akan dibagikan berikut:https://sls4service.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 Dasbor. Buat pengguna RAM dan berikan izin untuk mengasumsikan peran RAM tersebut.
Buat peran RAM
Buat peran RAM yang dapat diasumsikan oleh pengguna RAM atau peran RAM dalam Akun Alibaba Cloud saat ini. Untuk informasi selengkapnya, lihat Gunakan peran RAM untuk akses resource lintas akun.
Berikan peran RAM izin untuk mengakses URL halaman yang ingin Anda bagikan. Sebagai contoh, berikan izin read-only 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 selengkapnya, lihat Buat pengguna RAM dan berikan izin. Pilih OpenAPI Access saat membuat pengguna RAM. Setelah pengguna RAM dibuat, catat Pasangan Kunci Akses pengguna tersebut.
Berikan pengguna RAM izin untuk mengasumsikan peran RAM.
CatatanUntuk
Resource, masukkan ARN peran RAM.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram::137******44:role/role-name" } ] }
Hasilkan URL tanpa login
Hasilkan URL tanpa login dari halaman Konsol yang ingin Anda bagikan agar memungkinkan akses tanpa kata sandi. Untuk contoh kode dalam bahasa pemrograman seperti Java dan Python, lihat Contoh kode.
Gunakan
AccessKeypengguna RAM untuk mengakses STS dan mendapatkan token keamanan. Anda dapat menentukan periode validitas token sesuai 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 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
TicketTypeadalahmini.http://signin.alibabacloud.com/federation?Action=GetSigninToken &AccessKeyId=<ID AccessKey dari Pasangan Kunci Akses temporary yang dikembalikan oleh STS> &AccessKeySecret=<Rahasia AccessKey dari Pasangan Kunci Akses temporary 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 tanpa login.
http://signin.alibabacloud.com/federation?Action=Login &LoginUrl=<URL tempat Anda dialihkan ketika login gagal. Kami merekomendasikan agar Anda menentukan URL tempat Anda dialihkan ketika kode status HTTP 302 dikembalikan pada aplikasi yang dikelola sendiri. Anda harus menggunakan encodeURL untuk mengenkoding URL tersebut.> &Destination=<URL yang akan dibagikan dari halaman kueri dan analisis atau halaman Dasbor yang ingin Anda bagikan. Jika parameter telah dikonfigurasi, Anda harus menggunakan encodeURL untuk mengenkoding parameter tersebut.> &SigninToken=<Token login yang diperoleh. Anda harus menggunakan encodeURL untuk mengenkoding token tersebut.>
Sematkan URL tanpa login sebagai iFrame
Sematkan URL tanpa login ke halaman web Anda sebagai iFrame.
Saat pertama kali mengakses URL tanpa login di browser, Anda dapat mengujinya. Setelah pengujian selesai, token login yang digunakan menjadi tidak valid. Anda harus membuat ulang URL tanpa login tersebut.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bagikan halaman Konsol</title>
</head>
<body>
<iframe width="1280" height="720" src="Logon-free URL"> </iframe>
</body>
</html>Contoh kode
Untuk contoh kode 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
Ketika URL tanpa login disematkan ke halaman web sebagai iFrame, error berikut dilaporkan:
Refused to frame 'https://signin.alibabacloud.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' *.aliyun.com"Penyebab
Karena alasan keamanan, iFrame lintas domain tidak didukung.
Solusi
Modifikasi header Content-Security-Policy (CSP).
Anda dapat menentukan nama domain eksplisit atau nama domain wildcard dalam direktif CSP untuk mengizinkan penyematan halaman dari website tertentu. Sebagai contoh, gunakan direktif CSP berikut untuk mengizinkan penyematan halaman dari website
aliyun.comdan*.aliyun.com:Content-Security-Policy: frame-ancestors 'self' aliyun.com *.aliyun.com;Anda juga dapat menggunakan karakter wildcard (*) dalam direktif CSP untuk mengizinkan penyematan halaman dari semua website. Contoh:
Content-Security-Policy: frame-ancestors *;Namun, mengizinkan penyematan dari semua website menimbulkan risiko keamanan. Kami merekomendasikan agar Anda tidak melakukannya kecuali benar-benar diperlukan. Untuk informasi selengkapnya, kunjungi Referensi Content Security Policy.