文档中心 > 合规保留策略(WORM)
合规保留策略(WORM)

最近更新时间:2021-11-19

合规保留策略介绍

借助对象锁定(object lock)功能,可以保证对象在规定时间内不会被删除和覆盖,以满足您的数据合规要求。

要使用对象锁定,应按照如下步骤:

  1. 创建新的存储桶,同时开启对象锁定。

  2. (可选)为存储桶中对象配置默认的保留期限,相关接口为PutObjectLockConfiguration。

  3. 将需要锁定的对象上传到存储桶中。

  4. 将保留期限(retention)或依法保留标记(legal hold)规则应用于被保护的对象,相关接口为PutObjectRetention和PutObjectLegalHold。

对象锁定功能分为两个模式:

  • 监管模式(Governance mode)

  • 合规模式(Compliance mode)

在监管模式下,普通用户无法覆盖或者删除被保护的对象,只有拥有s3:BypassGovernanceRetention权限并且请求中明确要求修改的情况下,才可以修改对象的保留期限或者依法保留标记。而在合规模式下,任何人都无法进行修改。


合规保留策略举例

// 创建桶并且开启对象锁定

 
s3Client.CreateBucket(&s3.CreateBucketInput{
    Bucket: aws.String("bucketname"),
    ObjectLockEnabledForBucket: aws.Bool(true),
})

// 修改桶的默认保留期限
// 调用者需要s3:PutBucketObjectLockConfiguration权限
 
s3Client.PutObjectLockConfiguration(&s3.PutObjectLockConfigurationInput{
    Bucket: aws.String("bucketname"),
    ObjectLockConfiguration: &s3.ObjectLockConfiguration{
        ObjectLockEnabled: aws.String("Enabled"),
        Rule: &s3.ObjectLockRule{
            DefaultRetention: &s3.DefaultRetention{
                    Mode: aws.String("GOVERNANCE"),
                    Days: aws.Int64(10),
            },
        },
    },
})

// 设置对象的保留期限规则
// 调用者需要s3:PutObjectRetention权限
 
retainUntil := time.Now().Add(30 * 24 * time.Hour)
s3Client.PutObjectRetention(&s3.PutObjectRetentionInput{
    Bucket:    aws.String("bucketname"),
    Key:       aws.String("objectname"),
    VersionId: aws.String("version"),
    Retention: &s3.ObjectLockRetention{
        Mode:            aws.String("GOVERNANCE"),
        RetainUntilDate: &retainUntil,
    },
})

// 设置对象的依法保留标记
// 调用者需要s3:PutObjectLegalHold权限
 
client.PutObjectLegalHoldRequest(&s3.PutObjectLegalHoldInput{
    Bucket:    aws.String("bucketname"),
    Key:       aws.String("objectname"),
    VersionId: aws.String("version"),
    LegalHold: &s3.ObjectLockLegalHold{
        Status: aws.String("ON"),
    },
})