全部产品
Search
文档中心

Object Storage Service:Kebijakan retensi (WORM)

更新时间:Dec 11, 2025

Fitur Write Once, Read Many (WORM) dari kebijakan retensi di Object Storage Service (OSS) mencegah data dari penghapusan atau modifikasi. Jika Anda ingin mencegah semua pengguna, termasuk pemilik resource, dari memodifikasi atau menghapus objek dalam bucket OSS selama periode tertentu, Anda dapat mengonfigurasi kebijakan retensi untuk bucket tersebut. Selama periode retensi, Anda hanya dapat mengunggah dan membaca objek. Objek hanya dapat dimodifikasi atau dihapus setelah periode retensi berakhir.

Skenario

Fitur WORM yang disediakan oleh kebijakan retensi di OSS membantu perusahaan memenuhi persyaratan regulasi dan kepatuhan dari U.S. Securities and Exchange Commission (SEC) dan Financial Industry Regulatory Authority (FINRA). Fitur ini cocok untuk sektor-sektor seperti keuangan, asuransi, kesehatan, dan sekuritas, serta untuk skenario seperti audit data log dalam Multi-Layer Protection Scheme (MLPS).

Catatan

OSS telah terakreditasi dan diaudit oleh Cohasset Associates serta memenuhi persyaratan ketat untuk retensi catatan elektronik. Bucket OSS dengan kebijakan retensi yang dikonfigurasi mematuhi regulasi seperti SEC Rule 17a-4(f), FINRA Rule 4511, dan Commodity Futures Trading Commission (CFTC) Rule 1.31. Untuk informasi lebih lanjut, lihat Laporan Penilaian OSS Cohasset.

Prasyarat

Pastikan versioning diaktifkan atau dinonaktifkan untuk bucket tempat Anda ingin menetapkan kebijakan retensi. Anda tidak dapat menetapkan kebijakan retensi jika versioning ditangguhkan. Untuk informasi selengkapnya tentang versioning, lihat Versioning.

Catatan

  • Anda hanya dapat mengonfigurasi kebijakan retensi untuk bucket.

  • Anda tidak dapat mengaktifkan OSS-HDFS dan mengonfigurasi kebijakan retensi untuk bucket yang sama.

  • Selama periode retensi, Anda dapat mengonfigurasi aturan lifecycle untuk mengubah kelas penyimpanan objek dalam bucket guna mengurangi biaya penyimpanan dan memastikan kepatuhan.

Deskripsi aturan

  • Aturan Aktif

    Secara default, kebijakan retensi berbasis waktu berada dalam status InProgress selama 24 jam setelah dibuat. Selama periode ini, resource bucket dilindungi.

    • Dalam 24 jam setelah kebijakan retensi dibuat

      • Jika kebijakan retensi belum dikunci, pemilik bucket dan pengguna yang berwenang dapat menghapus kebijakan tersebut.

      • Jika kebijakan retensi telah dikunci, kebijakan tersebut tidak dapat dihapus dan periode retensinya tidak dapat dipersingkat. Namun, periode retensi dapat diperpanjang. Data dalam bucket dilindungi oleh kebijakan retensi. Jika Anda mencoba menghapus atau memodifikasi data dalam bucket, error 409 FileImmutable akan dikembalikan.

    • Lebih dari 24 jam setelah kebijakan retensi dibuat

      Jika kebijakan retensi belum dikunci lebih dari 24 jam setelah dibuat, kebijakan tersebut menjadi tidak valid dan dapat dihapus.

  • Penghapusan

    • Kebijakan retensi berbasis waktu merupakan atribut metadata dari sebuah bucket. Jika bucket dihapus, kebijakan retensi bucket tersebut juga dihapus.

    • Jika kebijakan retensi belum dikunci dalam 24 jam setelah dibuat, pemilik bucket dan pengguna yang berwenang dapat menghapus kebijakan tersebut.

    • Jika bucket berisi objek yang dilindungi oleh kebijakan retensi, Anda tidak dapat menghapus bucket atau kebijakan retensi tersebut.

  • Contoh

    Misalnya, Anda membuat kebijakan retensi dengan periode retensi 30 hari untuk sebuah bucket pada 1 Juni 2022, dan segera mengunci kebijakan tersebut. Anda mengunggah tiga objek, file1.txt, file2.txt, dan file3.txt, pada waktu yang berbeda. Tabel berikut mencantumkan tanggal unggah dan tanggal kedaluwarsa objek-objek tersebut.

    Nama objek

    Tanggal unggah

    Tanggal kedaluwarsa objek

    file1.txt

    1 April 2022

    30 April 2022

    file2.txt

    1 Juni 2022

    30 Juni 2022

    file3.txt

    1 September 2022

    30 September 2022

Metode

Gunakan Konsol OSS

  1. Buat kebijakan retensi.

    1. Masuk ke Konsol OSS.

    2. Klik Buckets, lalu klik nama bucket tujuan.

    3. Pada panel navigasi di sebelah kiri, pilih Content Security > Retention Policy.

    4. Pada halaman Retention Policy, klik Create Policy.

    5. Pada dialog Create Policy, tentukan Retention Period.

      Catatan

      Periode retensi diukur dalam hari. Nilai yang valid: 1 hingga 25.550.

    6. Klik OK.

      Catatan

      Status kebijakan adalah InProgress. Status ini berlaku selama 24 jam. Selama periode ini, resource bucket dilindungi. Jika Anda memutuskan untuk tidak menyimpan kebijakan ini, Anda dapat menghapusnya dalam waktu 24 jam.

  2. Kunci kebijakan retensi.

    1. Klik Lock.

    2. Pada dialog yang muncul, klik OK.

      Penting

      Setelah kebijakan retensi dikunci, Anda tidak dapat memodifikasi atau menghapusnya. Anda juga tidak dapat memodifikasi atau menghapus data dalam bucket selama periode retensi.

  3. (Opsional) Modifikasi periode retensi.

    1. Klik Edit.

    2. Pada dialog yang muncul, ubah periode retensi.

      Penting

      Anda hanya dapat memperpanjang periode retensi. Anda tidak dapat mempersingkatnya.

Gunakan Alibaba Cloud SDK

Kode contoh berikut memberikan contoh cara mengonfigurasi kebijakan retensi menggunakan SDK untuk bahasa pemrograman umum. Untuk informasi selengkapnya tentang kode contoh untuk bahasa pemrograman lainnya, lihat Overview.

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.InitiateBucketWormRequest;
import com.aliyun.oss.model.InitiateBucketWormResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket. 
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. 
        String region = "cn-hangzhou";

        // Buat instance OSSClient. 
        // Panggil metode shutdown untuk melepaskan resource saat OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Buat objek InitiateBucketWormRequest. 
            InitiateBucketWormRequest initiateBucketWormRequest = new InitiateBucketWormRequest(bucketName);
            // Atur periode retensi menjadi 1 hari. 
            initiateBucketWormRequest.setRetentionPeriodInDays(1);

            // Buat kebijakan retensi. 
            InitiateBucketWormResult initiateBucketWormResult = ossClient.initiateBucketWorm(initiateBucketWormRequest);

            // Tampilkan ID kebijakan retensi. 
            String wormId = initiateBucketWormResult.getWormId();
            System.out.println(wormId);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

<?php

// Masukkan file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // (Wajib) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Tentukan bahwa parameter wajib belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah.
$cfg->setRegion($region);

// Tentukan endpoint jika endpoint disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat objek InitiateBucketWormRequest untuk membuat kebijakan retensi untuk bucket dan atur periode retensi kebijakan retensi menjadi tiga hari.
$request = new Oss\Models\InitiateBucketWormRequest(
    bucket: $bucket, 
    initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
        retentionPeriodInDays: 3 // Atur periode retensi menjadi tiga hari.
));

// Gunakan metode initiateBucketWorm untuk membuat kebijakan retensi untuk bucket.
$result = $client->initiateBucketWorm($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
    'request id:' . $result->requestId . PHP_EOL . // ID permintaan, yaitu pengidentifikasi unik permintaan.
    'worm id:' . $result->wormId // ID kebijakan retensi.
);

Node.js

const OSS = require('ali-oss');

const client = new OSS({
  // Atur region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,  
  authorizationV4: true,
  // Atur bucket ke nama bucket Anda.
  bucket: 'yourBucketName',
});
// Buat kebijakan retensi data.
async function initiateBucketWorm() {
 // Atur bucket ke nama bucket Anda.
  const bucket = 'yourbucketname'
  // Tentukan periode retensi dalam hari.
  const days = '<Retention Days>'
    const res = await client.initiateBucketWorm(bucket, days)
  console.log(res.wormId)
}

initiateBucketWorm()

Python

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah dan jelaskan tujuan skrip. Contoh ini menjelaskan cara menggunakan fitur Write Once Read Many (WORM) untuk membuat kebijakan retensi untuk bucket.
parser = argparse.ArgumentParser(description="initiate bucket worm sample")

# Tentukan parameter --region, yang menentukan wilayah tempat bucket berada. Parameter baris perintah ini wajib.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tentukan parameter --bucket, yang menentukan nama bucket. Parameter baris perintah ini wajib.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tentukan parameter --endpoint, yang menentukan endpoint wilayah tempat bucket berada. Parameter baris perintah ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
# Tentukan parameter --retention_period_in_days, yang menentukan jumlah hari objek dapat disimpan. Parameter baris perintah ini wajib.
parser.add_argument('--retention_period_in_days', help='Jumlah hari objek dapat disimpan.', required=True)

def main():
    # Uraikan parameter baris perintah untuk mendapatkan nilai yang ditentukan pengguna.
    args = parser.parse_args()

    # Muat informasi autentikasi yang diperlukan untuk mengakses OSS dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK untuk membuat objek konfigurasi dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # Jika endpoint kustom disediakan, ubah parameter endpoint dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi di atas untuk menginisialisasi instance OSSClient dan izinkan instance berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk membuat kebijakan retensi untuk bucket.
    result = client.initiate_bucket_worm(oss.InitiateBucketWormRequest(
        bucket=args.bucket, # Nama bucket.
        initiate_worm_configuration=oss.InitiateWormConfiguration(
            retention_period_in_days=int(args.retention_period_in_days), # Jumlah hari objek dapat disimpan. Atur nilainya sebagai bilangan bulat.
        ),
    ))

    # Tampilkan kode status HTTP operasi, ID permintaan, dan ID kebijakan retensi untuk memeriksa status permintaan.
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' worm id: {result.worm_id}'
    )

# Panggil fungsi main untuk memulai logika pemrosesan saat skrip dijalankan langsung.
if __name__ == "__main__":
    main() # Tentukan titik masuk dalam fungsi skrip. Alur program kontrol dimulai di sini.

Go

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Error creating credentials provider: %v", err)
	}

	// Buat instance OSSClient.
	// Atur yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint aktual.
	// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah aktual.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Atur versi signature.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Error creating OSS client: %v", err)
	}

	// Tentukan nama bucket tempat Anda ingin mengonfigurasi kebijakan retensi.
	bucketName := "<yourBucketName>"

	// Atur periode retensi objek menjadi 60 hari.
	result, err := client.InitiateBucketWorm(bucketName, 60)
	if err != nil {
		log.Fatalf("Error initiating bucket WORM: %v", err)
	}

	log.Println("WORM policy initiated successfully:", result)
}

C++

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
            
    /* Atur Endpoint ke endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur Region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Masukkan nama bucket. Misalnya, examplebucket. */
    std::string BucketName = "examplebucket";

      /* Inisialisasi resource seperti jaringan. */
      InitializeSdk();

      ClientConfiguration conf;
      conf.signatureVersion = SignatureVersionType::V4;
      /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
  
      /* Buat kebijakan retensi data dan atur periode perlindungan objek menjadi 1 hari. */
      auto outcome = client.InitiateBucketWorm(InitiateBucketWormRequest(BucketName, 1));

      if (outcome.isSuccess()) {      
            std::cout << " InitiateBucketWorm success " << std::endl;
            std::cout << "WormId:" << outcome.result().WormId() << std::endl;
      }
      else {
        /* Tangani pengecualian. */
        std::cout << "InitiateBucketWorm fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
      }

      /* Lepaskan resource seperti jaringan. */
      ShutdownSdk();
      return 0;
}

Gunakan antarmuka baris perintah ossutil

Anda dapat menggunakan antarmuka baris perintah ossutil untuk membuat kebijakan WORM. Untuk informasi tentang cara menginstal ossutil, lihat Install ossutil.

Perintah berikut membuat kebijakan WORM baru di bucket examplebucket dan mengatur periode retensi menjadi 365 hari.

ossutil api initiate-bucket-worm --bucket examplebucket --initiate-worm-configuration "{\"RetentionPeriodInDays\":\"365\"}"

Untuk informasi selengkapnya tentang perintah ini, lihat initiate-bucket-worm.

API Terkait

Operasi di atas didasarkan pada operasi API. Jika program Anda memiliki persyaratan kustomisasi tinggi, Anda dapat langsung membuat permintaan REST API. Untuk membuat permintaan REST API, Anda harus menulis kode secara manual untuk menghitung signature. Untuk informasi selengkapnya, lihat InitiateBucketWorm.

Bekerja dengan versioning

Dalam skenario seperti memberikan perlindungan versi data untuk sistem backup seperti Veeam, melacak catatan modifikasi aset seperti diagram desain sirkuit, atau memenuhi persyaratan pengarsipan kepatuhan di industri keuangan, Anda sering perlu mengizinkan pembaruan data kontinu sekaligus memastikan bahwa semua versi historis bersifat immutable dan tidak dapat dihapus. Untuk mencapai hal ini, Anda dapat membuat kebijakan retensi dan mengaktifkan versioning untuk bucket secara bersamaan. Versioning memastikan bahwa ketika objek ditimpa atau dihapus, versi lamanya tetap disimpan sebagai versi historis, bukan dihapus secara fisik. Kebijakan retensi menetapkan periode perlindungan untuk semua versi objek dalam bucket. Selama periode ini, tidak ada versi yang dapat dihapus atau dimodifikasi.

Ketika versioning dan kebijakan retensi dikonfigurasi untuk bekerja bersama, mereka mengikuti prinsip-prinsip berikut:

  • Urutan pengaktifan fitur: Tidak ada batasan urutan pengaktifan versioning dan kebijakan retensi. Anda dapat mengonfigurasinya secara fleksibel sesuai kebutuhan.

  • Batasan transisi status:

    • Setelah kebijakan retensi dikunci, Anda tidak dapat mengubah status versioning dari "Enabled" menjadi "Suspended".

    • Anda dapat mengaktifkan kebijakan retensi untuk bucket yang versioning-nya "Suspended". Setelah kebijakan diaktifkan, Anda dapat mengubah status versioning menjadi "Enabled".

  • Mekanisme perlindungan versi objek:

    • Kebijakan retensi melindungi semua versi objek. Tidak ada versi yang dapat dihapus atau dimodifikasi selama periode perlindungan.

    • Anda dapat mengunggah objek dengan nama yang sama untuk membuat versi baru. Versi baru tersebut juga dilindungi oleh kebijakan retensi.

    • Kebijakan retensi tidak berlaku untuk delete markers. Penghapusan delete markers tidak dibatasi oleh kebijakan retensi.

  • Sinergi replikasi data:

    • Bucket sumber dan tujuan mendukung konfigurasi independen untuk versioning dan kebijakan retensi.

    • Informasi versi ditransmisikan secara normal selama replikasi. Bucket tujuan mengelola versi berdasarkan konfigurasinya sendiri.

    • Operasi penghapusan versi di bucket sumber tidak disinkronkan ke bucket tujuan yang memiliki kebijakan retensi yang diaktifkan.

FAQ

Bagaimana operasi penghapusan objek ditangani ketika kebijakan retensi dan versioning diaktifkan secara bersamaan?

Ketika kebijakan retensi dan versioning diaktifkan secara bersamaan, penghapusan objek memiliki efek berikut:

  • Operasi penghapusan membuat delete marker tetapi tidak menghapus versi historis objek secara fisik.

  • Kebijakan retensi tidak melindungi delete markers. Delete markers dapat dihapus.

  • Semua versi objek tidak dapat dihapus selama periode perlindungan kebijakan retensi, meskipun delete marker ada.

  • Manajemen lifecycle dapat menghapus delete markers yang menggantung, tetapi tidak dapat menghapus versi objek yang dilindungi oleh kebijakan retensi.

Setelah kebijakan retensi diaktifkan, apakah status versioning masih dapat dimodifikasi?

Setelah kebijakan retensi diaktifkan, batasan berikut berlaku untuk memodifikasi status versioning:

  • Enabled ke Suspended: Jika status versioning adalah "Enabled", Anda tidak dapat mengubahnya menjadi "Suspended" setelah kebijakan retensi dikunci.

  • Suspended ke Enabled: Jika status versioning adalah "Suspended", Anda masih dapat mengubahnya menjadi "Enabled" setelah mengaktifkan kebijakan retensi.

  • Disabled ke Enabled: Untuk bucket dengan versioning dinonaktifkan, Anda dapat mengaktifkan versioning setelah mengonfigurasi kebijakan retensi.

Apakah penggunaan kebijakan retensi dengan versioning meningkatkan biaya penyimpanan?

Hal ini menimbulkan biaya penyimpanan tambahan berikut:

  • Semua versi objek disimpan selama periode perlindungan kebijakan retensi dan tidak dapat dihapus oleh aturan lifecycle.

  • Akumulasi versi dapat menyebabkan peningkatan signifikan dalam penggunaan penyimpanan, terutama untuk objek yang sering diperbarui.

  • Anda dapat menetapkan periode retensi yang wajar untuk kebijakan retensi dan menggunakan aturan lifecycle untuk mengelola transisi kelas penyimpanan guna mengoptimalkan biaya.

Apa manfaat kebijakan retensi?

Kebijakan retensi menyediakan penyimpanan data yang aman dan sesuai regulasi. Selama periode retensi kebijakan retensi, data tidak dapat dimodifikasi atau dihapus. Jika Anda menggunakan kebijakan Resource Access Management (RAM) dan kebijakan bucket untuk melindungi data, data tersebut masih dapat dimodifikasi atau dihapus.

Dalam skenario apa saya memerlukan kebijakan retensi?

Anda dapat mengonfigurasi kebijakan retensi untuk bucket jika ingin menyimpan data penting, seperti catatan medis, dokumen teknis, dan kontrak, untuk jangka panjang serta mencegah data tersebut dari modifikasi atau penghapusan.

Dapatkah saya menghapus kebijakan retensi?

Hal ini tergantung pada status kebijakan retensi.

  • Belum dikunci: Pemilik bucket dan pengguna yang berwenang dapat menghapus kebijakan tersebut.

  • Telah dikunci: Tidak ada yang dapat menghapus kebijakan tersebut.

Dapatkah saya mengonfigurasi kebijakan retensi untuk objek?

Tidak, Anda tidak bisa. Anda hanya dapat mengonfigurasi kebijakan retensi untuk bucket, bukan untuk direktori atau objek individual.

Bagaimana cara menghitung waktu retensi objek?

Waktu kedaluwarsa retensi dihitung berdasarkan waktu modifikasi terakhir objek dan periode retensi kebijakan retensi. Misalnya, jika bucket memiliki kebijakan retensi 10 hari dan objek dalam bucket tersebut terakhir dimodifikasi pada 15 Februari 2022, objek tersebut disimpan hingga 25 Februari 2022.

Bagaimana cara menghapus bucket yang telah diaktifkan kebijakan retensinya?

  • Jika tidak ada objek yang disimpan, Anda dapat menghapusnya secara langsung.

  • Jika bucket berisi objek dan periode perlindungannya telah berakhir, Anda harus menghapus semua objek terlebih dahulu sebelum dapat menghapus bucket.

  • Anda tidak dapat menghapus objek selama periode perlindungannya.

Jika akun OSS saya memiliki pembayaran tertunda tetapi beberapa objek masih dalam periode perlindungan kebijakan retensi, apakah objek-objek tersebut akan tetap disimpan?

Catatan: Meskipun kebijakan retensi melindungi objek dalam bucket, Alibaba Cloud tetap akan menghapus data tersebut sesuai dengan aturan penangguhan layanan untuk pembayaran tertunda jika akun Anda memiliki pembayaran tertunda.

Dapatkah RAM user yang berwenang mengonfigurasi kebijakan retensi?

Ya, mereka bisa. API kebijakan retensi tersedia dan mendukung kebijakan RAM. RAM user yang berwenang dapat membuat atau menghapus kebijakan retensi di konsol atau menggunakan API atau SDK.