亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

開通S3對象存儲存儲桶合規保留

2023-06-21 08:16:23
88
0

WORM特性

WORM特性

S3 object lock,也被稱為對象存儲的WORM特性:write-once-read-many。這個特性主要目的是確保object在設定的時間內或者永遠不會被刪除或者覆蓋。其主要的應用場景就是數據保護場景,例如法規遵從。

保證數據文件“不可刪除、不可篡改”,規則啟用后,用戶可以在Bucket中上傳和讀取文件(Object),但是在Object的保留時間到期之前,任何用戶都不能修改、覆蓋、刪除處于合規保留期的對象;Object的保留時間到期后,才可以刪除Object。

合規保留設置注意事項如下:

規則生效:

  •  一個Bucket支持添加一條WORM規則,WORM規則創建后,狀態默認為【未啟用】。用戶需主動啟用規則。規則啟用后,規則不可禁用、不可刪除,且無法縮短保護時間,只可延長保護時間。
  • 啟用后的規則不可刪除
  •  保留時間精確到秒,如對象A的最后更新時間為2021-7-1 12:00:00,保護周期1天,則A會在2021-7-2 12:00:01過合規保留期。

關于Bucket操作:

  •  如當前Bucket有生效的WORM規則,且有處于合規保留期內的文件,則無法通過控制臺、API、SDK刪除Bucket。
  •  如當前Bucket有生效的WORM規則,但沒有處于合規保留期期的文件,或者Bucket為空,則可以刪除Bucket,從而間接刪除WORM規則。

對于對象的操作:

  • 如對象處于保護周期,則無法通過控制臺、API、SDK修改、覆蓋、刪除對象。
  • 若設置了生命周期 - 刪除文件的操作,需要等對象過了合規保留期后才可生效。

給存儲桶開啟合規保留

使用golang代碼,開啟存儲桶合規保留

(1)使用ak,sk,endpoint創建S3客戶端

func (cfg *ClientCfg) NewClient() (*s3.S3, error) {
	ssl := !strings.HasPrefix(cfg.Endpoint, "//")
	cred := credentials.NewStaticCredentials(cfg.Ak, cfg.Sk, "")
	transport := &http.Transport{
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true, //控制客戶端是否驗證服務器端的證書鏈和主機名
		},
	}
	httpClient := http.Client{Transport: transport}
	config := &aws.Config{
		DisableSSL:       aws.Bool(ssl),
		S3ForcePathStyle: aws.Bool(true),
		Region:           aws.String("default"),
		Endpoint:         aws.String(cfg.Endpoint),
		Credentials:      cred,
		HTTPClient:       &httpClient,
		//LogLevel:         aws.LogLevel(aws.LogDebugWithSigning),
	}
	sess, err := session.NewSession(config)
	if err != nil {
		return nil, err
	}
	return s3.New(sess), nil
}

(2)開啟存儲桶合規保留

func PutBucketRetention(s3Client *s3.S3, bucketname string, days int64) error {
	req, _ := s3Client.PutObjectLockConfigurationRequest(&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(days),
				},
			},
		},
	})
	req.HTTPRequest.Header.Add("x-amz-bucket-object-lock-enabled", "true")
	err := req.Send()
	return err
}

(3)獲取存儲桶合規保留配置信息

func GetBucketRetention(s3Client *s3.S3, bucketName string) (*s3.GetObjectLockConfigurationOutput, error) {
	data, err := s3Client.GetObjectLockConfiguration(&s3.GetObjectLockConfigurationInput{
		Bucket: aws.String(bucketName),
	})
	return data, err
}
0條評論
0 / 1000
梁****彬
4文章數
1粉絲數
梁****彬
4 文章 | 1 粉絲
原創

開通S3對象存儲存儲桶合規保留

2023-06-21 08:16:23
88
0

WORM特性

WORM特性

S3 object lock,也被稱為對象存儲的WORM特性:write-once-read-many。這個特性主要目的是確保object在設定的時間內或者永遠不會被刪除或者覆蓋。其主要的應用場景就是數據保護場景,例如法規遵從。

保證數據文件“不可刪除、不可篡改”,規則啟用后,用戶可以在Bucket中上傳和讀取文件(Object),但是在Object的保留時間到期之前,任何用戶都不能修改、覆蓋、刪除處于合規保留期的對象;Object的保留時間到期后,才可以刪除Object。

合規保留設置注意事項如下:

規則生效:

  •  一個Bucket支持添加一條WORM規則,WORM規則創建后,狀態默認為【未啟用】。用戶需主動啟用規則。規則啟用后,規則不可禁用、不可刪除,且無法縮短保護時間,只可延長保護時間。
  • 啟用后的規則不可刪除
  •  保留時間精確到秒,如對象A的最后更新時間為2021-7-1 12:00:00,保護周期1天,則A會在2021-7-2 12:00:01過合規保留期。

關于Bucket操作:

  •  如當前Bucket有生效的WORM規則,且有處于合規保留期內的文件,則無法通過控制臺、API、SDK刪除Bucket。
  •  如當前Bucket有生效的WORM規則,但沒有處于合規保留期期的文件,或者Bucket為空,則可以刪除Bucket,從而間接刪除WORM規則。

對于對象的操作:

  • 如對象處于保護周期,則無法通過控制臺、API、SDK修改、覆蓋、刪除對象。
  • 若設置了生命周期 - 刪除文件的操作,需要等對象過了合規保留期后才可生效。

給存儲桶開啟合規保留

使用golang代碼,開啟存儲桶合規保留

(1)使用ak,sk,endpoint創建S3客戶端

func (cfg *ClientCfg) NewClient() (*s3.S3, error) {
	ssl := !strings.HasPrefix(cfg.Endpoint, "//")
	cred := credentials.NewStaticCredentials(cfg.Ak, cfg.Sk, "")
	transport := &http.Transport{
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true, //控制客戶端是否驗證服務器端的證書鏈和主機名
		},
	}
	httpClient := http.Client{Transport: transport}
	config := &aws.Config{
		DisableSSL:       aws.Bool(ssl),
		S3ForcePathStyle: aws.Bool(true),
		Region:           aws.String("default"),
		Endpoint:         aws.String(cfg.Endpoint),
		Credentials:      cred,
		HTTPClient:       &httpClient,
		//LogLevel:         aws.LogLevel(aws.LogDebugWithSigning),
	}
	sess, err := session.NewSession(config)
	if err != nil {
		return nil, err
	}
	return s3.New(sess), nil
}

(2)開啟存儲桶合規保留

func PutBucketRetention(s3Client *s3.S3, bucketname string, days int64) error {
	req, _ := s3Client.PutObjectLockConfigurationRequest(&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(days),
				},
			},
		},
	})
	req.HTTPRequest.Header.Add("x-amz-bucket-object-lock-enabled", "true")
	err := req.Send()
	return err
}

(3)獲取存儲桶合規保留配置信息

func GetBucketRetention(s3Client *s3.S3, bucketName string) (*s3.GetObjectLockConfigurationOutput, error) {
	data, err := s3Client.GetObjectLockConfiguration(&s3.GetObjectLockConfigurationInput{
		Bucket: aws.String(bucketName),
	})
	return data, err
}
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0