全部产品
Search
文档中心

Realtime Compute for Apache Flink:Praktik terbaik akses aman

更新时间:Jul 02, 2025

Flink tidak dapat memprediksi sistem hulu dan hilir yang ingin Anda gunakan sebelumnya. Jika sebuah pekerjaan perlu membaca dan menulis data ke sistem hulu dan hilir yang berbeda, Anda mungkin perlu menggunakan pasangan AccessKey sebagai kredensial akses. Pasangan AccessKey akun Alibaba Cloud memiliki semua izin pada sumber daya dalam akun tersebut. Kebocoran pasangan AccessKey dapat menyebabkan konsekuensi serius. Topik ini menjelaskan cara memberikan izin minimum yang diperlukan kepada Pengguna Manajemen Akses Sumber Daya (RAM) pada sistem hulu dan hilir serta cara mengenkripsi pasangan AccessKey dengan variabel Flink untuk meningkatkan keamanan akses.

Ikhtisar Solusi

Solusi ini mengimplementasikan akses yang lebih aman dengan menggunakan pasangan AccessKey berdasarkan prinsip hak istimewa minimal. Solusi ini menggunakan pasangan AccessKey dari pengguna RAM yang diberi izin untuk mengakses sumber daya hulu dan hilir tertentu atau izin minimum yang diperlukan, bukan pasangan AccessKey dari akun Alibaba Cloud. Selain itu, pasangan AccessKey dienkripsi dengan variabel Flink untuk mengurangi risiko kebocoran pasangan AccessKey dalam teks biasa, sehingga mengurangi risiko keamanan terhadap semua sumber daya cloud dalam akun Alibaba Cloud Anda.

Dalam topik ini, pengguna RAM dibuat dan diberi izin pada Logstore tertentu dalam proyek Layanan Log Sederhana. Pasangan AccessKey pengguna RAM dienkripsi dengan variabel Flink dan digunakan untuk membaca serta menulis data ke Layanan Log Sederhana.

Prosedur

  1. Buat pengguna RAM menggunakan akun Alibaba Cloud Anda atau sebagai administrator RAM. Untuk informasi lebih lanjut, lihat Buat pengguna RAM.

    Pilih OpenAPI Access di bagian Mode Akses. Setelah itu, ID AccessKey dan rahasia AccessKey secara otomatis dibuat untuk pengguna RAM.

    Penting

    Rahasia AccessKey pengguna RAM hanya ditampilkan saat pengguna RAM dibuat. Pastikan untuk menyimpan rahasia AccessKey tetap rahasia.

  2. Berikan izin pada Layanan Log Sederhana kepada pengguna RAM.

    1. Buat kebijakan kustom.

      1. Di panel navigasi sebelah kiri, pilih Permissions > Policies.

      2. Pada halaman Policies, klik Create Policy.

        image

      3. Pada halaman Buat Kebijakan, klik tab JSON, ganti skrip yang ada di editor kode dengan kode contoh berikut, lalu klik Next to edit policy information.

        Ganti parameter proyek dan logstore dalam kode contoh sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang cara membuat kebijakan kustom, lihat Contoh penggunaan kebijakan kustom untuk memberikan izin kepada pengguna RAM.

        Berikan izin baca saja pada Logstore tertentu

        {
            "Version": "1",
            "Statement": [
                {
                    "Action": "log:ListProject",
                    "Resource": "acs:log:*:*:project/*",
                    "Effect": "Allow"
                },
                {
                    "Action": "log:List*",
                    "Resource": "acs:log:*:*:project/<Nama Proyek>/logstore/*",
                    "Effect": "Allow"
                },
                {
                    "Action": [
                        "log:Get*",
                        "log:List*"
                    ],
                    "Resource": "acs:log:*:*:project/<Nama Proyek>/logstore/<Nama Logstore>",
                    "Effect": "Allow"
                }
            ]
        }

        Berikan izin tulis pada Logstore tertentu

        Untuk memberikan pengguna RAM izin menulis data ke Logstore tertentu, gunakan kebijakan berikut.

        Saat membuat kebijakan, Anda dapat menentukan Logstore atau Metricstore setelah kata kunci logstore. Jika Anda ingin mengelola Metricstore, kebijakan berikut juga berlaku.

        {
          "Version":"1",
          "Statement":[
            {
              "Effect":"Allow",
              "Action":[
                "log:PostLogStoreLogs"
              ],
              "Resource":[
                "acs:log:*:*:project/<Nama Proyek>/logstore/<Nama Logstore>"
              ]
            }
          ]
        }
      4. Masukkan nama dan deskripsi untuk kebijakan, lalu klik OK.

  3. Gunakan kebijakan kustom yang dibuat pada langkah sebelumnya untuk memberikan izin kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM.

  4. Konfigurasikan variabel untuk mengurangi risiko kebocoran pasangan AccessKey dalam teks biasa.

    Buat variabel untuk ID AccessKey dan rahasia AccessKey yang Anda peroleh saat membuat pengguna RAM di Langkah 1. Setelah variabel dibuat, Anda hanya perlu memanggil nama variabel alih-alih menentukan ID AccessKey dan rahasia AccessKey. Untuk informasi lebih lanjut tentang cara membuat variabel, lihat Kelola variabel dan kunci. Dalam topik ini, variabel bernama slslak dan slsaks dibuat untuk ID AccessKey dan rahasia AccessKey.

  5. Buat penyebaran Flink untuk membaca data dari Layanan Log Sederhana.

    Anda dapat memanggil variabel dalam format ${secret_values.Nama Variabel} saat mengembangkan draf SQL. Ini mencegah risiko keamanan yang disebabkan oleh kebocoran pasangan AccessKey dalam teks biasa. Contoh kode:

    CREATE TEMPORARY TABLE sls_input(
       `__source__` STRING METADATA VIRTUAL,
       __tag__ MAP<VARCHAR, VARCHAR> METADATA VIRTUAL,
       `__topic__` STRING METADATA VIRTUAL,
       deploymentName STRING,
       `level`STRING,
       `location` STRING,
       message STRING,
       thread STRING,
       `time`STRING
    ) WITH (
      'connector' = 'sls',
      'endpoint' ='cn-beijing-intranet.log.aliyuncs.com',
      'accessId' = '${secret_values.slsak}',
      'accessKey' = '${secret_values.slsaks}',
      'starttime' = '2024-08-30 15:39:00',
      'project' ='test',
      'logstore' ='flinktest'
    );
    
    CREATE TEMPORARY TABLE blackhole_sink(
       `__source__` STRING,
       `__topic__` STRING,
       deploymentName STRING,
       `level` STRING,
       `location` STRING,
       message STRING,
       thread STRING,
       `time` STRING,
       receive_time BIGINT
    ) WITH (
      'connector' = 'blackhole'
    );
    
    INSERT INTO blackhole_sink
    SELECT `__source__`,
       `__topic__`,
       deploymentName,
       `level`,
       `location`,
       message,
       thread,
       `time`,
       cast(__tag__['__receive_time__'] as bigint) as receive_time
    FROM sls_input; 
    

Referensi

  • Untuk menggunakan Flink membaca data dari dan menulis data ke Object Storage Service (OSS), Anda dapat mengonfigurasi kebijakan kustom untuk memberikan izin baca dan tulis pada bucket tertentu kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Kebijakan RAM.

  • Untuk informasi lebih lanjut tentang cara mengembangkan draf SQL, lihat Kembangkan draf SQL.

  • Flink menyediakan variabel pekerjaan dan proyek untuk mencegah risiko keamanan yang disebabkan oleh kebocoran data sensitif seperti pasangan AccessKey dan kata sandi dalam teks biasa. Anda dapat menggunakan variabel ini dalam berbagai skenario. Untuk informasi lebih lanjut tentang cara membuat variabel, lihat Kelola variabel dan kunci.