Keamanan, validitas, dan persyaratan rotasi kredensial bervariasi tergantung pada lingkungan penerapan. Pilih metode konfigurasi kredensial yang sesuai dengan kasus penggunaan Anda untuk menyeimbangkan keamanan dan biaya pemeliharaan.
Pilih jenis kredensial
Tablestore mendukung berbagai jenis kredensial, termasuk pasangan AccessKey dan token STS. Setiap metode ditujukan untuk skenario penerapan tertentu dan ketersediaan SDK.
|
Credential method |
Use case |
Requires a pre-configured AccessKey pair or STS token |
Underlying credential |
Validity |
Rotation or refresh method |
SDK support |
|
Aplikasi yang berjalan di lingkungan aman dan stabil dengan risiko rendah terhadap serangan eksternal serta tidak memerlukan rotasi kredensial yang sering untuk akses jangka panjang ke layanan cloud. |
Yes |
AccessKey pair |
Long-term |
Manual rotation |
Java, Go, Python, Node.js, .NET, PHP |
|
|
Aplikasi yang berjalan di lingkungan tidak tepercaya dan memerlukan kontrol atas validitas akses serta izin. |
Yes |
STS token |
Temporary |
Manual refresh |
Java, Go, Python, Node.js, PHP |
|
|
Aplikasi yang memerlukan otorisasi cross-account untuk mengakses layanan cloud. |
Yes |
STS token |
Temporary |
Automatic refresh |
Java |
|
|
Aplikasi yang berjalan pada Instance Elastic Compute Service (ECS), instance Elastic Container Instance (ECI), atau node pekerja Container Service for Kubernetes (ACK). |
No |
STS token |
Temporary |
Automatic refresh |
Java |
|
|
Aplikasi tidak tepercaya yang berjalan pada node pekerja ACK. |
No |
STS token |
Temporary |
Automatic refresh |
Java |
|
|
Aplikasi yang berjalan di Function Compute. |
No |
STS token |
Temporary |
No refresh required |
Java, Python |
|
|
Aplikasi yang perlu memperoleh kredensial dari sistem eksternal. |
No |
STS token |
Temporary |
Automatic refresh |
Java |
|
|
Aplikasi yang berjalan di lingkungan berisiko kebocoran Pasangan AccessKey dan memerlukan rotasi kredensial yang sering untuk akses jangka panjang ke layanan cloud. |
No |
AccessKey pair |
Long-term |
Automatic rotation |
Java |
|
|
Pengambilan kredensial kustom untuk kasus-kasus di mana metode sebelumnya tidak memenuhi kebutuhan Anda. |
Custom |
Custom |
Custom |
Custom |
Java |
|
|
Integrasi aplikasi AI dengan Knowledge Store dan Memory Store, tanpa perlu mengelola Pasangan AccessKey. |
No |
API key |
Configurable |
Manual revocation and recreation |
Python, TypeScript |
Konfigurasikan kredensial
Setelah memilih jenis kredensial, lihat bagian yang sesuai untuk instruksi langkah demi langkah dan contoh kode.
Use an AccessKey pair of a RAM user
Konfigurasikan kredensial menggunakan pasangan AccessKey (ID AccessKey dan AccessKey Secret) Pengguna RAM. Metode ini memerlukan pemeliharaan manual pasangan AccessKey dan menimbulkan risiko keamanan yang lebih tinggi.
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Jika pasangan AccessKey Akun Alibaba Cloud bocor, seluruh sumber daya dalam akun tersebut berisiko. Gunakan pasangan AccessKey Pengguna RAM dengan izin minimum yang diperlukan. Untuk memperoleh pasangan AccessKey Pengguna RAM, lihat Access Tablestore with a RAM user's AccessKey pair.
Konfigurasikan pasangan AccessKey melalui variabel lingkungan atau kredensial statis.
Environment variables
-
Konfigurasikan variabel lingkungan. Setelah mengaturnya, restart IDE, CLI, aplikasi desktop, dan layanan latar belakang agar perubahan diterapkan.
Linux
-
Tambahkan variabel lingkungan ke file
~/.bashrc.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc -
Terapkan perubahan.
source ~/.bashrc -
Verifikasi variabel lingkungan.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
macOS
-
Periksa jenis shell default.
echo $SHELL -
Lanjutkan berdasarkan jenis shell default.
Zsh
-
Tambahkan variabel lingkungan ke file
~/.zshrc.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Terapkan perubahan.
source ~/.zshrc -
Verifikasi variabel lingkungan.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Bash
-
Tambahkan variabel lingkungan ke file
~/.bash_profile.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Terapkan perubahan.
source ~/.bash_profile -
Verifikasi variabel lingkungan.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
-
Windows
CMD
-
Atur variabel lingkungan di CMD.
setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
Restart CMD dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
-
Atur variabel lingkungan di PowerShell.
[Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) -
Verifikasi variabel lingkungan.
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
Gunakan informasi kredensial melalui variabel lingkungan.
Java
import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory; import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider; public class AkDemoTest { public static void main(String[] args) throws Exception { { // Contoh 1: Peroleh kredensial dari variabel lingkungan EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // Gunakan credentialsProvider untuk operasi selanjutnya... } { // Contoh 2: Peroleh accessKeyId dan accessKeySecret dari variabel lingkungan final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID"); final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET"); // Gunakan accessKeyId dan accessKeySecret untuk operasi selanjutnya... } } }Python
# -*- coding: utf-8 -*- import os access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID") access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")Go
accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID") accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")Node.js
var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID; var secretAccessKey = process.env.TABLESTORE_ACCESS_KEY_SECRET;PHP
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID'); $accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');.NET
// Peroleh kredensial akses dari variabel lingkungan. var AccessKeyId = Environment.GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID"); var AccessKeySecret = Environment.GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET");
Static credentials
Referensikan kredensial dari variabel dalam kode Anda. Variabel tersebut diisi dengan nilai kredensial aktual dari variabel lingkungan, file konfigurasi, atau sumber data eksternal lainnya saat runtime.
Contoh berikut menggunakan kredensial statis dari file konfigurasi.
-
Buat file konfigurasi bernama
config.ini.[configName] TABLESTORE_ACCESS_KEY_ID = your_access_key_id TABLESTORE_ACCESS_KEY_SECRET = your_access_key_secret -
Gunakan informasi kredensial dari file konfigurasi.
Java
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider; import java.io.FileInputStream; import java.util.Properties; public class AkDemoTest { public static void main(String[] args) throws Exception { Properties properties = new Properties(); // Atur path ke file config.ini. Gunakan path aktual. String configFilePath = "config.ini"; // Baca file konfigurasi FileInputStream input = new FileInputStream(configFilePath); properties.load(input); input.close(); // Peroleh ID AccessKey dan AccessKey Secret dari file konfigurasi String accessKeyId = properties.getProperty("TABLESTORE_ACCESS_KEY_ID"); String accessKeySecret = properties.getProperty("TABLESTORE_ACCESS_KEY_SECRET"); CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret); // Gunakan credentialsProvider untuk operasi selanjutnya... } }Python
# -*- coding: utf-8 -*- import configparser # Baca file konfigurasi config = configparser.ConfigParser() # Asumsikan config.ini berada di direktori yang sama dengan skrip. Gunakan path aktual. config.read('config.ini') # Peroleh ID AccessKey dan AccessKey Secret dari file konfigurasi access_key_id = config.get('configName', 'TABLESTORE_ACCESS_KEY_ID') access_key_secret = config.get('configName', 'TABLESTORE_ACCESS_KEY_SECRET')Go
// Baca file konfigurasi. Gunakan path aktual. config, err := ini.Load("config.ini") if err != nil { fmt.Println("Gagal membaca file konfigurasi:", err) } // Peroleh ID AccessKey dan AccessKey Secret dari file konfigurasi access_key_id := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_ID").String() access_key_secret := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_SECRET").String()PHP
try { // Baca file konfigurasi. Asumsikan config.ini berada di direktori yang sama dengan skrip. Gunakan path aktual. $config = parse_ini_file('config.ini'); // Peroleh ID AccessKey dan AccessKey Secret $accessKeyId = $config['TABLESTORE_ACCESS_KEY_ID']; $accessKeySecret = $config['TABLESTORE_ACCESS_KEY_SECRET']; }catch (Exception $e) { printf($e->getMessage() . "\n"); return; }
Use STS temporary credentials
Konfigurasikan kredensial menggunakan kredensial identitas sementara (ID AccessKey, AccessKey Secret, dan Security Token) yang diperoleh dari Security Token Service (STS). Metode ini memerlukan pemeliharaan manual token STS dan menimbulkan risiko keamanan yang lebih tinggi. Untuk mengakses Tablestore beberapa kali dengan kredensial sementara, Anda harus merefresh token STS secara manual. Untuk memperoleh kredensial sementara STS, lihat Use STS temporary credentials to access Tablestore.
Konfigurasikan kredensial sementara STS melalui variabel lingkungan atau kredensial statis.
Environment variables
-
Konfigurasikan variabel lingkungan. Setelah mengaturnya, restart IDE, CLI, aplikasi desktop, dan layanan latar belakang agar perubahan diterapkan.
Linux
-
Tambahkan variabel lingkungan ke file
~/.bashrc.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.bashrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.bashrc echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.bashrc -
Terapkan perubahan.
source ~/.bashrc -
Verifikasi variabel lingkungan.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
macOS
-
Periksa jenis shell default.
echo $SHELL -
Lanjutkan berdasarkan jenis shell default.
Zsh
-
Tambahkan variabel lingkungan ke file
~/.zshrc.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.zshrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.zshrc echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.zshrc -
Terapkan perubahan.
source ~/.zshrc -
Verifikasi variabel lingkungan.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
Bash
-
Tambahkan variabel lingkungan ke file
~/.bash_profile.echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.bash_profile echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.bash_profile -
Terapkan perubahan.
source ~/.bash_profile -
Verifikasi variabel lingkungan.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET echo $TABLESTORE_SESSION_TOKEN
-
Windows
CMD
-
Atur variabel lingkungan di CMD.
setx TABLESTORE_ACCESS_KEY_ID "YOUR_STS_ACCESS_KEY_ID" setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_STS_ACCESS_KEY_SECRET" setx TABLESTORE_SESSION_TOKEN "YOUR_STS_TOKEN" -
Restart CMD dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET% echo %TABLESTORE_SESSION_TOKEN%
PowerShell
-
Atur variabel lingkungan di PowerShell.
[Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_STS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_STS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", "YOUR_STS_TOKEN", [EnvironmentVariableTarget]::User) -
Verifikasi variabel lingkungan.
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
-
-
Gunakan informasi kredensial melalui variabel lingkungan.
Java
import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory; import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider; public class StsDemoTest { public static void main(String[] args) throws Exception { { // Contoh 1: Peroleh kredensial dari variabel lingkungan EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // Gunakan credentialsProvider untuk operasi selanjutnya... } { // Contoh 2: Peroleh accessKeyId, accessKeySecret, dan securityToken dari variabel lingkungan final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID"); final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET"); final String securityToken = System.getenv("TABLESTORE_SESSION_TOKEN"); // Gunakan accessKeyId, accessKeySecret, dan securityToken untuk operasi selanjutnya... } } }Python
# -*- coding: utf-8 -*- import os access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID") access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET") sts_token = os.getenv("TABLESTORE_SESSION_TOKEN")Go
accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID") accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET") securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")Node.js
var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID; var secretAccessKey = process.env.TABLESTORE_ACCESS_KEY_SECRET; var stsToken = process.env.TABLESTORE_SESSION_TOKEN;PHP
$accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID'); $accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET'); $securityToken = getenv('TABLESTORE_SESSION_TOKEN');
Static credentials
Referensikan kredensial dari variabel dalam kode Anda. Variabel tersebut diisi dengan nilai kredensial aktual dari variabel lingkungan, file konfigurasi, atau sumber data eksternal lainnya saat runtime.
Contoh berikut menggunakan kredensial statis dari file konfigurasi.
-
Buat file konfigurasi bernama
config.ini.[configName] TABLESTORE_ACCESS_KEY_ID = your_sts_access_key_id TABLESTORE_ACCESS_KEY_SECRET = your_sts_access_key_secret TABLESTORE_SESSION_TOKEN = your_sts_token -
Gunakan informasi kredensial dari file konfigurasi.
Java
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider; import java.io.FileInputStream; import java.util.Properties; public class StsDemoTest { public static void main(String[] args) throws Exception { Properties properties = new Properties(); // Atur path file config.ini. Ganti path dengan path aktual. String configFilePath = "config.ini"; // Baca file konfigurasi. FileInputStream input = new FileInputStream(configFilePath); properties.load(input); input.close(); // Peroleh ID AccessKey, AccessKey Secret, dan token keamanan dari file konfigurasi. String accessKeyId = properties.getProperty("TABLESTORE_ACCESS_KEY_ID"); String accessKeySecret = properties.getProperty("TABLESTORE_ACCESS_KEY_SECRET"); String securityToken = properties.getProperty("TABLESTORE_SESSION_TOKEN"); CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret, securityToken); // Gunakan credentialsProvider untuk operasi selanjutnya... } }Python
# -*- coding: utf-8 -*- import configparser # Baca file konfigurasi config = configparser.ConfigParser() # Asumsikan config.ini berada di direktori yang sama dengan skrip. Gunakan path aktual. config.read('config.ini') # Peroleh ID AccessKey, AccessKey Secret, dan Security Token dari file konfigurasi access_key_id = config.get('configName', 'TABLESTORE_ACCESS_KEY_ID') access_key_secret = config.get('configName', 'TABLESTORE_ACCESS_KEY_SECRET') security_token = config.get('configName', 'TABLESTORE_SESSION_TOKEN')Go
// Baca file konfigurasi. Gunakan path aktual. config, err := ini.Load("config.ini") if err != nil { fmt.Println("Gagal membaca file konfigurasi:", err) } // Peroleh ID AccessKey, AccessKey Secret, dan Security Token dari file konfigurasi access_key_id := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_ID").String() access_key_secret := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_SECRET").String() security_token := config.Section("configName").Key("TABLESTORE_SESSION_TOKEN").String()PHP
try { // Baca file konfigurasi. Asumsikan config.ini berada di direktori yang sama dengan skrip. Gunakan path aktual. $config = parse_ini_file('config.ini'); // Peroleh ID AccessKey, AccessKey Secret, dan Security Token $accessKeyId = $config['TABLESTORE_ACCESS_KEY_ID']; $accessKeySecret = $config['TABLESTORE_ACCESS_KEY_SECRET']; $securityToken = $config['TABLESTORE_SESSION_TOKEN']; }catch (Exception $e) { printf($e->getMessage() . "\n"); return; }
Use RAMRoleARN
Konfigurasikan kredensial menggunakan RAMRoleARN. Metode ini menggunakan token STS sebagai kredensial dasar. Saat Anda menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM, alat Credentials meminta token STS dari STS dan secara otomatis merefresh token tersebut sebelum sesi berakhir. Anda juga dapat memberikan nilai pada policy untuk membatasi peran RAM ke set izin yang lebih kecil. Metode ini memerlukan pasangan AccessKey, yang meningkatkan risiko keamanan dan upaya pemeliharaan. Untuk memperoleh pasangan AccessKey, lihat Create an AccessKey. Untuk memperoleh RAMRoleARN, lihat Create a RAM role.
-
Tambahkan dependensi kredensial.
<!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java --> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>0.3.4</version> </dependency> -
Konfigurasikan pasangan AccessKey dan RAMRoleARN sebagai kredensial akses.
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials; import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials; import com.aliyun.credentials.models.CredentialModel; public class RamRoleArnAkDemoTest { public static void main(String[] args) { com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config(); // Jenis kredensial. Atur nilainya ke ram_role_arn. config.setType("ram_role_arn"); // ARN dari peran RAM yang akan diasumsikan. Contoh: acs:ram::123456789012****:role/adminrole. Anda juga dapat mengatur RoleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. config.setRoleArn("<RoleArn>"); // Peroleh ID AccessKey dari variabel lingkungan. config.setAccessKeyId(System.getenv().get("TABLESTORE_ACCESS_KEY_ID")); // Peroleh AccessKey Secret dari variabel lingkungan. config.setAccessKeySecret(System.getenv().get("TABLESTORE_ACCESS_KEY_SECRET")); // Tentukan nama sesi peran RAM. config.setRoleName("roleSessionName"); // Tentukan kebijakan yang memiliki izin lebih sedikit. Opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} config.setPolicy("<Policy>"); // Atur periode validitas sesi peran. Opsional. config.setRoleSessionExpiration(3600); final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config); CredentialsProvider credentialsProvider = new CredentialsProvider(){ @Override public void setCredentials(ServiceCredentials credentials) { } @Override public ServiceCredentials getCredentials() { CredentialModel credential = credentialsClient.getCredential(); return new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken()); } }; // Gunakan credentialsProvider untuk operasi selanjutnya... } }
Use ECSRAMRole
Konfigurasikan kredensial menggunakan ECSRAMRole. Metode ini menggunakan token STS sebagai kredensial dasar. ECSRAMRole memungkinkan Anda menyambungkan peran ke instance ECS, instance ECI, atau node pekerja ACK. Token STS secara otomatis direfresh dalam instans tersebut. Metode ini tidak memerlukan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan kredensial manual. Untuk memperoleh ECSRAMRole, lihat Create a RAM role.
-
Tambahkan dependensi kredensial.
<!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java --> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>0.3.4</version> </dependency> -
Konfigurasikan ECSRAMRole sebagai kredensial akses.
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials; import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials; import com.aliyun.credentials.models.CredentialModel; public class EcsRamRoleDemoTest { public static void main(String[] args) { com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config(); // Jenis kredensial. Atur nilainya ke ecs_ram_role. config.setType("ecs_ram_role"); // Nama peran RAM yang disambungkan ke instance ECS. Opsional. Jika Anda tidak menentukan parameter ini, nama peran akan diambil secara otomatis. Kami menyarankan Anda menentukan parameter ini untuk mengurangi jumlah permintaan. config.setRoleName("ECSRAMRole"); // Aktifkan mode hardened dari layanan metadata instans ECS (IMDSv2). Opsional. Kami menyarankan Anda mengaktifkan parameter ini untuk meningkatkan keamanan sistem secara keseluruhan. config.setEnableIMDSv2(true); final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config); CredentialsProvider credentialsProvider = new CredentialsProvider(){ @Override public void setCredentials(ServiceCredentials credentials) { } @Override public ServiceCredentials getCredentials() { CredentialModel credential = credentialsClient.getCredential(); return new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken()); } }; // Gunakan credentialsProvider untuk operasi selanjutnya... } }
Use OIDCRoleARN
Setelah Anda mengonfigurasi peran RAM untuk node pekerja ACK, aplikasi dalam pod pada node tersebut dapat memperoleh token STS dari peran terkait dari server metadata, mirip dengan aplikasi yang diterapkan pada instance ECS. Namun, jika aplikasi tidak tepercaya berjalan pada kluster, seperti kode yang dikirim pelanggan, jangan memperoleh token STS dari server metadata.
RAM Roles for Service Account (RRSA) menyediakan isolasi izin tingkat aplikasi. RRSA memungkinkan aplikasi tidak tepercaya memperoleh kredensial yang diperlukan secara aman tanpa mengekspos sumber daya cloud lainnya. Metode ini menggunakan token STS sebagai kredensial dasar. Kluster ACK membuat dan memasang file token OIDC untuk pod aplikasi yang berbeda serta menyuntikkan informasi konfigurasi terkait ke dalam variabel lingkungan. Alat Credentials membaca informasi konfigurasi dari variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC dari STS untuk memperoleh token STS dari peran yang terikat. Metode ini tidak memerlukan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan kredensial manual. Untuk informasi selengkapnya, lihat Use RRSA for pod-level access control.
-
Tambahkan dependensi kredensial.
<!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java --> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>0.3.4</version> </dependency> -
Konfigurasikan peran RAM OIDC sebagai kredensial akses.
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials; import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials; import com.aliyun.credentials.models.CredentialModel; public class OidcRoleArnDemoTest { public static void main(String[] args) { com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config(); // Jenis kredensial. Atur nilainya ke oidc_role_arn. config.setType("oidc_role_arn"); // ARN dari peran RAM. Anda juga dapat mengatur RoleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. config.setRoleArn("<RoleArn>"); // ARN dari penyedia OIDC. Anda juga dapat mengatur OidcProviderArn menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN. config.setOidcProviderArn("<OidcProviderArn>"); // Path file token OIDC. Anda juga dapat mengatur OidcTokenFilePath menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE. config.setOidcTokenFilePath("<OidcTokenFilePath>"); // Nama sesi peran. Anda juga dapat mengatur RoleSessionName menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME. config.setRoleSessionName("<RoleSessionName>"); // Tentukan kebijakan yang memiliki izin lebih sedikit. Opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} config.setPolicy("<Policy>"); // Atur waktu kedaluwarsa sesi. config.setRoleSessionExpiration(3600); final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config); CredentialsProvider credentialsProvider = new CredentialsProvider() { @Override public void setCredentials(ServiceCredentials credentials) { } @Override public ServiceCredentials getCredentials() { CredentialModel credential = credentialsClient.getCredential(); return new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken()); } }; // Gunakan credentialsProvider untuk operasi selanjutnya... } }
Use credentials from the Function Compute context
Konfigurasikan kredensial dari konteks Function Compute. Metode ini menggunakan token STS sebagai kredensial dasar. Function Compute mengasumsikan peran layanan yang dikonfigurasi untuk fungsi guna memperoleh token STS, yang kemudian diteruskan ke kode fungsi melalui parameter konteks Credentials. Token ini berlaku selama 36 jam dan tidak dapat diubah. Waktu eksekusi maksimum suatu fungsi adalah 24 jam, sehingga token tidak kedaluwarsa selama eksekusi dan tidak perlu direfresh. Metode ini tidak memerlukan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan kredensial manual. Untuk memberikan izin kepada Function Compute agar dapat mengakses Tablestore, lihat Use a function role to access other cloud services.
Java
-
Tambahkan dependensi konteks Function Compute.
<!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-core --> <dependency> <groupId>com.aliyun.fc.runtime</groupId> <artifactId>fc-java-core</artifactId> <version>1.4.1</version> </dependency> -
Inisialisasi penyedia kredensial dengan kredensial dari konteks Function Compute.
package example; import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.Credentials; import com.aliyun.fc.runtime.StreamRequestHandler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class App implements StreamRequestHandler { @Override public void handleRequest( InputStream inputStream, OutputStream outputStream, Context context) throws IOException { // Peroleh informasi kredensial. Sebelum menjalankan kode, pastikan layanan yang terkait dengan fungsi telah dikonfigurasi dengan peran yang memiliki izin Tablestore. Kami menyarankan Anda menggunakan peran AliyunFCDefaultRole. Credentials creds = context.getExecutionCredentials(); // Buat penyedia kredensial menggunakan kredensial yang diperoleh. CredentialsProvider credentialsProvider = new DefaultCredentialProvider(creds.getAccessKeyId(), creds.getAccessKeySecret(), creds.getSecurityToken()); // Gunakan credentialsProvider untuk operasi selanjutnya... outputStream.write(new String("done").getBytes()); } }
Python
Peroleh kredensial akses sementara dari konteks Function Compute.
# -*- coding: utf-8 -*-
def handler(event, context):
# Peroleh informasi kredensial. Sebelum menjalankan kode, pastikan layanan yang terkait dengan fungsi
# telah dikonfigurasi dengan peran yang memiliki izin Tablestore. Kami menyarankan Anda menggunakan peran AliyunFCDefaultRole.
creds = context.credentials
access_key_id = creds.access_key_id
access_key_secret = creds.access_key_secret
security_token = creds.security_token
# Operasi selanjutnya...
return 'success'
Use CredentialsURI
Konfigurasikan kredensial menggunakan CredentialsURI. Metode ini menggunakan token STS sebagai kredensial dasar. Alat Credentials memperoleh token STS dari URI yang Anda berikan dan menginisialisasi klien kredensial. Metode ini tidak memerlukan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan kredensial manual. Layanan backend yang merespons CredentialsURI harus menerapkan logika refresh token STS otomatis untuk memastikan aplikasi selalu dapat memperoleh kredensial yang valid.
-
Agar alat Credentials dapat mengurai dan menggunakan token STS, URI harus mematuhi protokol respons berikut:
Kode status respons: 200
-
Struktur isi respons:
{ "Code": "Success", "AccessKeySecret": "AccessKeySecret", "AccessKeyId": "AccessKeyId", "Expiration": "2021-09-26T03:46:38Z", "SecurityToken": "SecurityToken" }
-
Tambahkan dependensi kredensial.
<!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java --> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>0.3.4</version> </dependency> -
Konfigurasikan CredentialsURI sebagai kredensial akses.
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials; import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials; import com.aliyun.credentials.models.CredentialModel; public class CredentialsUriDemoTest { public static void main(String[] args) { com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config(); // Jenis kredensial. Atur nilainya ke credentials_uri. config.setType("credentials_uri"); // URI yang digunakan untuk memperoleh kredensial. Format: http://local_or_remote_uri/ config.setCredentialsUri("<local_or_remote_uri>"); final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config); CredentialsProvider credentialsProvider = new CredentialsProvider() { @Override public void setCredentials(ServiceCredentials credentials) { } @Override public ServiceCredentials getCredentials() { CredentialModel credential = credentialsClient.getCredential(); return new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken()); } }; // Gunakan credentialsProvider untuk operasi selanjutnya... } }
Use an automatically rotated AccessKey pair
Konfigurasikan kredensial menggunakan ClientKey. Dengan ClientKey, Key Management Service (KMS) secara otomatis merotasi pasangan AccessKey Pengguna RAM yang dikelola sesuai jadwal periodik, mengubah pasangan AccessKey statis menjadi dinamis dan mengurangi risiko kebocoran. KMS juga mendukung rotasi segera, yang memungkinkan Anda mengganti pasangan AccessKey dengan cepat jika terjadi kebocoran. Metode ini tidak memerlukan pemeliharaan manual pasangan AccessKey, sehingga mengurangi risiko keamanan dan upaya pemeliharaan.
-
Tambahkan dependensi klien rahasia.
<dependency> <groupId>com.aliyun</groupId> <artifactId>alibabacloud-secretsmanager-client</artifactId> <version>1.3.7</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.7.0</version> </dependency> -
Buat file konfigurasi bernama
secretsmanager.properties.# Jenis kredensial akses. Atur nilainya ke client_key. credentials_type=client_key # Kata sandi dekripsi untuk Client Key. Anda dapat membaca kata sandi dari variabel lingkungan atau file. Konfigurasikan hanya salah satu pengaturan berikut. client_key_password_from_env_variable=<nama variabel lingkungan kata sandi kunci privat client key Anda> client_key_password_from_file_path=<path file kata sandi kunci privat client key Anda> # Path ke file kunci privat Client Key client_key_private_key_path=<path file kunci privat client key Anda> # ID wilayah layanan KMS terkait cache_client_region_id=[{"regionId":"<regionId>"}] -
Gunakan informasi kredensial dari file konfigurasi.
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider; import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials; import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials; import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; public class ClientKeyDemoTest { public static void main(String[] args) throws CacheSecretException { final SecretCacheClient client = SecretCacheClientBuilder.newClient(); CredentialsProvider credentialsProvider = new CredentialsProvider() { @Override public void setCredentials(ServiceCredentials credentials) { } @Override public ServiceCredentials getCredentials() { try { SecretInfo secretInfo = client.getSecretInfo("<secretName>"); JSONObject jsonObject = new JSONObject(secretInfo.getSecretValue()); String accessKeyId = jsonObject.getString("AccessKeyId"); String accessKeySecret = jsonObject.getString("AccessKeySecret"); return new DefaultCredentials(accessKeyId, accessKeySecret); } catch (CacheSecretException | JSONException e) { return null; } } }; // Gunakan credentialsProvider untuk operasi selanjutnya... } }
Use custom credentials
Jika metode konfigurasi kredensial sebelumnya tidak memenuhi kebutuhan Anda, implementasikan antarmuka Credential Providers untuk menyesuaikan cara penyediaan kredensial. Jika implementasi dasar menggunakan token STS, Anda harus mendukung refresh kredensial.
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials;
public class CustomCredentialProviderDemoTest {
public static void main(String[] args) {
CredentialsProvider credentialsProvider = new CredentialsProvider(){
// Inisialisasi variabel.
String accessKeyId = null;
// Inisialisasi variabel.
String accessKeySecret = null;
// Inisialisasi variabel.
// String token = null;
@Override
public void setCredentials(ServiceCredentials credentials) {
}
@Override
public ServiceCredentials getCredentials() {
//TODO
// Implementasikan logika kustom untuk memperoleh kredensial.
// Kembalikan kredensial jangka panjang: access_key_id dan access_key_secret.
return new DefaultCredentials(accessKeyId, accessKeySecret);
// Kembalikan kredensial sementara: access_key_id, access_key_secret, dan token.
// Untuk kredensial sementara, refresh kredensial berdasarkan waktu kedaluwarsa.
// return new DefaultCredentials(accessKeyId, accessKeySecret, token);
}
};
// Gunakan credentialsProvider untuk operasi selanjutnya...
}
}