OSS支援在伺服器端對上傳的資料進行加密編碼(Server-Side Encryption)。上傳資料時,OSS對收到的使用者資料進行加密,然後再將得到的加密資料持久化儲存下來。下載資料時,OSS自動對儲存的加密資料進行解密並把未經處理資料返回給使用者,並在返回的HTTP請求Header中,聲明該資料進行了伺服器端加密。
配置Bucket加密
您可以通過以下代碼設定Bucket預設加密方式,設定成功之後,所有上傳至該Bucket但未設定加密方式的Object都會使用Bucket預設加密方式進行加密:
const OSS = require("ali-oss");
const client = new OSS({
// yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'yourregion',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname填寫儲存空間名稱。
bucket: 'yourbucketname'
});
async function putBucketEncryption() {
try {
// 配置Bucket加密方式。
const result = await client.putBucketEncryption("bucket-name", {
SSEAlgorithm: "AES256", // 此處以設定AES256加密為例。若使用KMS加密,需添加KMSMasterKeyID屬性。
// KMSMasterKeyID:“yourKMSMasterKeyId”,設定KMS密鑰ID,加密方式為KMS可設定此項。當SSEAlgorithm值為KMS,且使用指定的祕密金鑰加密時,需輸入密鑰ID。其他情況下,必須為空白。
});
console.log(result);
} catch (e) {
console.log(e);
}
}
putBucketEncryption();
擷取Bucket加密配置
以下代碼用於擷取Bucket加密配置:
const OSS = require("ali-oss");
const client = new OSS({
// yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'yourregion',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname填寫儲存空間名稱。
bucket: 'yourbucketname'
});
async function getBucketEncryption() {
try {
const result = await client.getBucketEncryption("bucket-name");
console.log(result);
} catch (e) {
console.log(e);
}
}
getBucketEncryption();
刪除Bucket加密配置
以下代碼用於刪除Bucket加密配置:
const OSS = require("ali-oss");
const client = new OSS({
// yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'yourregion',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname填寫儲存空間名稱。
bucket: 'yourbucketname'
});
async function deleteBucketEncryption() {
try {
// 刪除Bucket的加密配置。
const result = await client.deleteBucketEncryption("bucket-name");
console.log(result);
} catch (e) {
console.log(e);
}
}
deleteBucketEncryption();
相關文檔
關於伺服器端加密的完整範例程式碼,請參見GitHub樣本。
關於設定伺服器端加密的API介面說明,請參見PutBucketEncryption。
關於擷取伺服器端加密配置的API介面說明,請參見GetBucketEncryption。
關於刪除伺服器端加密配置的API介面說明,請參見DeleteBucketEncryption。