Deskripsi masalah
Permintaan ditolak oleh kebijakan yang dikonfigurasi untuk token keamanan yang dihasilkan oleh Security Token Service (STS).
Penyebab
Parameter policy dalam kode untuk memperoleh token keamanan dari STS menyebabkan masalah izin.
Contoh
Misalnya, dalam contoh kode Java berikut untuk memperoleh token keamanan, parameter policy menentukan izin yang terkait dengan token tersebut. Izin aktual yang diterapkan pada token keamanan merupakan irisan antara izin peran dan izin yang ditentukan dalam parameter policy pada kode tersebut:
String roleSessionName = "<session-name>";
String policy = "{\n" +
" \"Version\": \"1\", \n" +
" \"Statement\": [\n" +
" {\n" +
" \"Action\": [\n" +
" \"oss:*\"\n" +
" ], \n" +
" \"Resource\": [\n" +
" \"acs:oss:*:*:*\" \n" +
" ], \n" +
" \"Effect\": \"Allow\"\n" +
" }\n" +
" ]\n" +
"}";
try {
// Tambahkan endpoint. Endpoint STS digunakan langsung, sehingga biarkan dua parameter pertama kosong dan jangan tentukan region ID.
DefaultProfile.addEndpoint("", "", "Sts", endpoint);
// Buat profil default. Biarkan parameternya kosong dan jangan tentukan region ID.
IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret);
// Gunakan profil untuk membuat client.
DefaultAcsClient client = new DefaultAcsClient(profile);
final AssumeRoleRequest request = new AssumeRoleRequest();
request.setMethod(MethodType.POST);
request.setRoleArn(roleArn);
request.setRoleSessionName(roleSessionName);
request.setPolicy(policy); // Jika policy kosong, pengguna diberikan semua izin dari role tersebut.
request.setDurationSeconds(1000L); // Tentukan periode validitas kredensial.
Solusi
Periksa izin yang ditentukan dalam parameter policy pada operasi API OSS. Untuk informasi selengkapnya, lihat Gunakan kredensial temporary yang disediakan oleh STS untuk mengakses OSS. Izin aktual yang diterapkan pada token keamanan merupakan irisan antara izin peran yang diberikan dalam Langkah 4: Berikan izin peran untuk mengunggah objek ke OSS dan izin yang ditentukan oleh parameter policy dalam Langkah 5: Peroleh kredensial akses temporary. Gunakan contoh berikut untuk memeriksa irisan izin yang Anda konfigurasi dalam kedua langkah tersebut.
-
Contoh 1
Jika izin peran yang dikonfigurasi dalam Langkah 4 adalah izin sistem
AliyunOSSFullAccessdan izinoss:PutObjectdikonfigurasi dalam Langkah 5, kredensial akses temporary akhirnya memperoleh izinoss:PutObject. Dalam kasus ini, Anda hanya dapat mengunggah objek ke bucket yang ditentukan. -
Contoh 2
Jika izin peran yang dikonfigurasi dalam Langkah 4 adalah izin
oss:PutObjectdan izinoss:GetObjectdikonfigurasi dalam Langkah 5, kredensial akses temporary tidak memperoleh izin apa pun sehingga tidak ada operasi yang dapat dilakukan pada bucket yang ditentukan.