

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS Clean Rooms 差異隱私權
<a name="differential-privacy"></a>

AWS Clean Rooms 差異隱私權可協助您透過數學支援的技巧來保護使用者的隱私權，只需按幾下滑鼠，即可透過直覺式控制實作。作為全受管功能，不需要先前的差異隱私權體驗來協助您防止使用者重新識別。 AWS Clean Rooms 會自動新增仔細校正的雜訊量，以在執行時間查詢結果，以協助保護您的個人層級資料。

AWS Clean Rooms 差異隱私權支援各種分析查詢，非常適合各種使用案例，其中查詢結果中的少量錯誤不會影響分析的實用性。有了它，您的合作夥伴就可以產生有關廣告行銷活動、投資決策、臨床研究等的業務關鍵洞見，而不需要您合作夥伴的任何額外設定。

AWS Clean Rooms 差異隱私權可防止以惡意方式使用純量函數或數學運算子符號的溢位或無效轉換錯誤。

如需 AWS Clean Rooms 差異隱私權的詳細資訊，請參閱下列主題。

**Topics**
+ [差異隱私權](#dp-overview)
+ [中的差異隱私權如何 AWS Clean Rooms 運作](#dp-how-it-works)
+ [差異性隱私權政策](dp-settings.md)
+ [AWS Clean Rooms 差異隱私權的 SQL 功能](dp-sql-capabilities.md)
+ [不同的隱私權查詢秘訣和範例](dp-query-tips-examples.md)
+ [AWS Clean Rooms 差異性隱私權的限制](dp-limitations.md)

## 差異隱私權
<a name="dp-overview"></a>

差異隱私權僅允許彙總洞見，並混淆這些洞見中任何個人資料的貢獻。差異隱私權可保護協作資料，使其不會收到了解特定個人的結果。如果沒有差異隱私權，可以接收結果的成員可以嘗試透過新增或移除有關個人的記錄來推斷個別使用者資料，並觀察查詢結果的差異。

開啟差異隱私權時，指定的雜訊量會新增至查詢結果，以混淆個別使用者的貢獻。如果可接收結果的成員在從資料集中移除有關個人的記錄後嘗試觀察查詢結果的差異，查詢結果的變異性有助於防止識別個人的資料。 AWS Clean Rooms 差異隱私權使用 [SampCert](https://github.com/leanprover/SampCert) 採樣器，這是一種經過驗證的正確採樣器實作，由 開發 AWS。

## 中的差異隱私權如何 AWS Clean Rooms 運作
<a name="dp-how-it-works"></a>

在 中開啟差異隱私權[的工作流程，在完成工作流程 AWS Clean Rooms](what-is.md#how-it-works)時 AWS Clean Rooms 需要下列額外步驟：

1. 您可以在新增[自訂分析規則](analysis-rules-custom.md)時開啟差異隱私權。

1. [您可以為協同合作設定差異隱私權政策](configure-differential-privacy.md)，以使用差異隱私權來保護資料表以供查詢。

完成這些步驟後，可以查詢的成員可以開始對差異隱私權保護的資料執行查詢。 AWS Clean Rooms 會傳回符合差異隱私權政策的結果。 AWS Clean Rooms 差異隱私權會追蹤您可以執行的剩餘查詢預估數量，類似於顯示車輛目前油位的汽車氣位表。可以查詢的成員可以執行的查詢數量受限於 中設定的每個查詢參數的**隱私權預算**和新增的雜訊[差異性隱私權政策](dp-settings.md)。 ****

### 考量事項
<a name="dp-considerations"></a>

在 中使用差異隱私權時 AWS Clean Rooms，請考慮下列事項：
+ 可以接收結果的成員無法使用差異隱私權。他們將針對其設定的資料表，設定關閉差異隱私權的自訂分析規則。
+ 當兩個或多個資料提供者都開啟差異隱私權時，可以查詢的成員無法聯結來自兩個或多個資料提供者的資料表。

# 差異性隱私權政策
<a name="dp-settings"></a>

差異隱私權政策控制在協同合作中允許可查詢的成員執行多少彙總函數。**隱私權預算**定義了一個常見的有限資源，可套用協同合作中的所有資料表。**每個查詢新增的雜訊**會管理耗盡隱私權預算的速率。

需要差異隱私權政策，才能讓您的差異隱私權受保護資料表可供查詢。這是協作中的一次性步驟，包含兩個輸入：
+ **隱私權預算** – 根據 epsilon 量化，隱私權預算控制隱私權保護的層級。這是常見的有限資源，適用於在協同合作中受到差異隱私權保護的所有資料表，因為目標是保留使用者隱私，其資訊可以存在於多個資料表中。

  每次在資料表上執行查詢時，都會耗用**隱私權預算**。當隱私權預算用盡時，可以查詢的協同合作成員在增加或重新整理之前無法執行其他查詢。透過設定更大的隱私權預算，可以接收結果的成員可以減少他們對資料中個人的不確定性。選擇在諮詢業務決策者之後，平衡協同合作需求與隱私權需求的隱私權預算。

  如果您打算定期將新資料帶入協同合作，您可以選取**每月重新整理隱私權預算**，以每月自動建立新的隱私權預算。選擇此選項可在跨重新整理重複查詢時，顯示有關資料列的任意資訊量。如果在隱私權預算重新整理之間重複查詢相同的資料列，請避免選擇此選項。
+ **每個查詢新增的雜訊**是根據您要隱藏貢獻的使用者數量來衡量。此值會管理耗盡隱私權預算的速率。較大的雜訊值可減少耗盡隱私權預算的速率，因此允許對資料執行更多查詢。不過，這應與發佈不準確的資料洞見相平衡。設定此值時，請考慮協作洞察所需的準確性。

您可以使用預設差異隱私權政策，根據您的使用案例快速完成設定或自訂差異隱私權政策。 AWS Clean Rooms 差異隱私權提供直覺式控制來設定政策。 AWS Clean Rooms 差異隱私權可讓您根據資料上所有查詢中可能的彙總數目預覽公用程式，並預估在資料協同合作中可以執行多少查詢。

您可以使用互動式範例，了解每個查詢新增的不同**隱私權預算**和雜訊值如何影響不同類型的 SQL 查詢的結果。 ****一般而言，您需要平衡隱私權需求與要允許的查詢數量，以及這些查詢的準確性。每個查詢新增的較小**隱私權預算**或較大雜訊可以更好地保護使用者隱私權，但為您的協作合作夥伴提供較不有意義的洞見。 ****

如果您增加**隱私權預算**，同時保持**每個查詢參數新增的雜訊**相同，則可以查詢的成員可以在協同合作中的資料表上執行更多彙總。您可以在協同合作期間隨時增加**隱私權預算**。如果您減少**隱私權預算**，同時保持**每個查詢參數新增的雜訊**相同，可以查詢的成員可以執行較少的彙總。在可以查詢的成員開始分析您的資料之後，您無法減少**隱私權預算**。

如果您增加**每個查詢新增的雜訊**，同時保持**隱私權預算**輸入相同，則可以查詢的成員可以在協同合作中對資料表執行更多彙總。如果您減少**每個查詢新增的雜訊**，同時保持**隱私權預算**輸入相同，可以查詢的成員可以執行較少的彙總。您可以在協同合作期間隨時增加或減少**每個查詢新增的雜訊**。

差異隱私權政策是由隱私權預算範本 API 動作管理。

# AWS Clean Rooms 差異隱私權的 SQL 功能
<a name="dp-sql-capabilities"></a>

AWS Clean Rooms 差異隱私權使用一般用途查詢結構來支援複雜的 SQL 查詢。根據此結構驗證自訂分析範本，以確保它們可以在受差異隱私權保護的資料表上執行。下表指出支援哪些 函數。如需詳細資訊，請參閱[查詢結構和語法](analysis-rules-custom.md#dp-query-structure-syntax)。


| Category | Spark 分析引擎支援的 SQL 建構 | 常見資料表表達式 (CTEs) | 最終 SELECT 子句 | 
| --- |--- |--- |--- |
| Aggregate functions |    ANY\$1VALUE 函數   APPROXIMATE PERCENTILE\$1DISC 函數   AVG 函數   COUNT 和 COUNT DISTINCT 函數   MAX 函數   MEDIAN 函數   MIN 函數   PERCENTILE\$1CONT 函數   STDDEV\$1SAMP 和 STDDEV\$1POP 函數   SUM 和 SUM DISTINCT 函數   VAR\$1SAMP 和 VAR\$1POP 函數    | Supported with the condition that CTEs using differential privacy protected tables must result in data with user-level records. You should write the SELECT expression in those CTEs using `SELECT userIdentifierColumn...' format. | Supported aggregations: AVG, COUNT, COUNT DISTINCT, STDDEV, and SUM. | 
| CTEs | WITH clause, WITH clause subquery | Supported with the condition that CTEs using differential privacy protected tables must result in data with user-level records. You should write the SELECT expression in those CTEs using `SELECT userIdentifierColumn...' format. | N/A | 
| Subqueries |    SELECT   HAVING   JOIN   JOIN 條件   FROM   WHERE    | You can have any subquery that doesn't reference differential privacy relations in these constructs. You can have any subquery that references differential privacy relations in a FROM and JOIN clause only. | 
| Join clauses |    INNER JOIN   LEFT JOIN   左半聯結   左 ANTI 加入   RIGHT JOIN   完整加入   【JOIN】 OR 運算子   CROSS JOIN    |  支援的條件是，在使用者識別符資料欄上僅支援等同聯結的 JOIN 函數，並且在查詢開啟差異隱私權的兩個或多個資料表時是強制性的。確保強制性的同等加入條件是正確的。確認資料表擁有者已在所有資料表中設定相同的使用者識別符欄，以便使用者的定義在資料表之間保持一致。 在開啟差異隱私權的情況下結合兩個或多個關係時，不支援 CROSS JOIN 函數。  | 
| Set operators | UNION, UNION ALL, INTERSECT, EXCEPT \$1 MINUS (these are synonyms) | UNION, UNION ALL, INTERSECT, EXCEPT \$1 MINUS (these are synonyms) | Not supported | 
| Window functions |  彙總函數   AVG 範圍函數   COUNT 範圍函數   CUME\$1DIST 範圍函數   DENSE\$1RANK 範圍函數   FIRST\$1VALUE 範圍函數   LAG 範圍函數   LAST\$1VALUE 範圍函數   LEAD 範圍函數   MAX 視窗函數   MEDIAN 視窗函數   MIN 視窗函數   NTH\$1VALUE 範圍函數   STDDEV\$1SAMP 和 STDDEV\$1POP 視窗函數 (STDDEV\$1SAMP 和 STDDEV 是同義詞）   SUM 視窗函數   VAR\$1SAMP 和 VAR\$1POP 視窗函數 (VAR\$1SAMP 和 VARIANCE 是同義詞）   排名函數   DENSE\$1RANK 範圍函數   NTILE 範圍函數   PERCENT\$1RANK 範圍函數   RANK 範圍函數   ROW\$1NUMBER 範圍函數    | All are supported with the condition that the user identifier column in the window function's partition clause is required when you query a relation with differential privacy turned on. | Not supported | 
| Conditional expressions |    CASE 條件表達式   COALESCE 表達式   GREATEST 和 LEAST 函數   NVL 和 COALESCE 函數   NVL2 函數   NULLIF 函數    | All are supported | All are supported | 
| Conditions |    比較條件   邏輯條件   模式比對條件   BETWEEN 範圍條件   Null 條件    | EXISTS and IN can't be used because they require subqueries. All others are supported. | All are supported | 
| Date-time functions |    交易中日期與時間函數   串連運算子   ADD\$1MONTHS 函數   CONVERT\$1TIMEZONE 函數   CURRENT\$1DATE 函數   DATEADD 函數   DATEDIFF 函數   DATE\$1PART 函數   DATE\$1TRUNC 函數   EXTRACT 函數   TO\$1TIMESTAMP 函數   日期或時間戳記函數的日期部分    | All are supported | All are supported | 
| String functions |    \$1\$1 （串連） 運算子   BTRIM 函數   CHAR\$1LENGTH 函數   CHARACTER\$1LENGTH 函數   CONCAT 函數   LEFT 和 RIGHT 函數   LEN 函數   LENGTH 函數   LOWER 函數   LPAD 和 RPAD 函數   LTRIM 函數   POSITION 函數   REGEXP\$1COUNT 函數   REGEXP\$1INSTR 函數   REGEXP\$1REPLACE 函數   REGEXP\$1SUBSTR 函數   REPEAT 函數   REPLACE 函數   REVERSE 函數   RTRIM 函數   SPLIT\$1PART 函數   SUBSTRING 函數   TRANSLATE 函數   TRIM 函數   UPPER 函數    | All are supported | All are supported | 
| Data type formatting functions |    CAST 函數   TO\$1CHAR   TO\$1DATE 陣列   TO\$1NUMBER   日期時間格式字串   數值格式字串    | All are supported | All are supported | 
| Hash functions |    AES\$1ENCRYPT   AES\$1DECRYPT   ENCODE   DECODE   MD5 函數   SHA1 函數   SHA2 函數   XX\$1HASH64    | All are supported | All are supported | 
| Mathematical operator symbols | \$1, -, \$1, /, %, and @ | All are supported | All are supported | 
| Math functions |    ABS 函數   ACOS 函數   ASIN 函數   ATAN 函數   ATAN2 函數   CBRT 函數   CEILING (或 CEIL) 函數   COS 函數   COT 函數   DEGREES 函數   LTRIM 函數   EXP 函數   FLOOR 函數   LN 函數   LOG 函數   MOD 函數   PI 函數   POWER 函數   RADIANS 函數   RANDOM 函數   ROUND 函數   SIGN 函數   SIN 函數   SQRT 函數   TRUNC 函數    | All are supported | All are supported | 
| VARBYTE functions |    UNHEX、   UNBASE64   HEX    HLL\$1SKETCH\$1AGG、    HLL\$1SKETCH\$1ESTIMATE   HLL\$1UNION   HLL\$1UNION\$1AGG    | All are supported | All are supported | 
| JSON |    TO\$1JSON   GET\$1JSON\$1OBJECT    | All are supported | All are supported | 
| Array functions |    ARRAY\$1CONTAINS   ARRAY\$1DISTINCT   ARRAY\$1EXCEPT   ARRAY\$1INTERSECT   ARRAY\$1JOIN   ARRAY\$1REMOVE   ARRAY\$1SORT   ARRAY\$1UNION    | Not supported | Not supported | 
| Extended GROUP BY | GROUPING SETS, ROLLUP, CUBE | Not supported | Not supported | 
| Sort operation | ORDER BY | Supported with the condition that an ORDER BY clause is only supported in a window function's partition clause when querying tables with differential privacy turned on. | Supported | 
| Row limits | LIMIT, OFFSET | Not supported in CTEs using differential privacy protected tables | All are supported | 
| Table and column aliasing |   | Supported | Supported | 
| Math functions on aggregate functions |   | Supported | Supported | 
| Scalar functions within aggregate functions |   | Supported | Supported | 

## 不支援 SQL 建構的常見替代方案
<a name="common-alternatives"></a>


| Category | SQL 建構 | 備用 | 
| --- |--- |--- |
|  範圍函數  |    LISTAGG   PERCENTILE\$1CONT   PERCENTILE\$1DISC    | You can use the equivalent aggregate function with GROUP BY. | 
| Mathematical operator symbols |    \$1column \$1\$1/ 2   \$1column \$1/ 2   \$1column ^ 2    |    CBRT   SQRT   POWER(\$1column， 2)    | 
| Scalar functions |    SYSDATE   \$1column：：integer   convert(type， \$1column)    |    CURRENT\$1DATE   CAST \$1column AS 整數   CAST \$1column AS 類型    | 
| Literals | INTERVAL ‘1 SECOND' | INTERVAL '1' SECOND | 
| Row limiting | TOP n | LIMIT n | 
| Join |    USING   NATURAL    | ON clause should explicitly contain a join criterion. | 

# 不同的隱私權查詢秘訣和範例
<a name="dp-query-tips-examples"></a>

AWS Clean Rooms 差異隱私權使用[一般用途查詢結構](dp-sql-capabilities.md)來支援各種 SQL 建構，例如用於資料準備的通用資料表表達式 (CTEs)，以及常用的彙總函數，例如 `COUNT`、 或 `SUM`。為了透過新增雜訊以在執行時間彙總查詢結果來混淆資料中任何可能使用者的貢獻， AWS Clean Rooms 差異隱私要求最終的彙總函數`SELECT statement`在使用者層級資料上執行。

下列範例使用兩個名為 `socialco_impressions`和 `socialco_users` 的資料表，來自媒體發佈者，他們想要使用差異隱私權保護資料，同時與運動品牌與`athletic_brand_sales`資料協作。媒體發佈者已將資料`user_id`欄設定為使用者識別符資料欄，同時啟用差異隱私權 AWS Clean Rooms。廣告商不需要差異隱私權保護，並想要在合併資料上使用 CTEs執行查詢。由於其 CTE 使用差異隱私保護資料表，廣告商會在 CTE 資料欄清單中包含那些受保護資料表的使用者識別符資料欄，並聯結使用者識別符資料欄上的受保護資料表。

```
WITH matches_table AS(
     SELECT si.user_id, si.campaign_id, s.sale_id, s.sale_price
     FROM socialco_impressions si
     JOIN socialco_users su
         ON su.user_id = si.user_id
     JOIN athletic_brand_sales s
         ON s.emailsha256 = su.emailsha256
     WHERE s.timestamp > si.timestamp
    
UNION ALL
 
     SELECT si.user_id, si.campaign_id, s.sale_id, s.sale_price
     FROM socialco_impressions si
     JOIN socialco_users su
         ON su.user_id = si.user_id
     JOIN athletic_brand_sales s
         ON s.phonesha256 = su.phonesha256
     WHERE s.timestamp > si.timestamp
)
        
SELECT COUNT (DISTINCT user_id) as unique_users
FROM matches_table
GROUP BY campaign_id
ORDER BY COUNT (DISTINCT user_id) DESC
LIMIT 5
```

同樣地，如果您想要在差異隱私權保護資料表上執行視窗函數，則必須在 `PARTITION BY`子句中包含使用者識別符欄。

```
ROW_NUMBER() OVER (PARTITION BY conversion_id, user_id ORDER BY match_type, match_age) AS row
```

# AWS Clean Rooms 差異性隱私權的限制
<a name="dp-limitations"></a>

AWS Clean Rooms 差異隱私權不會處理下列情況：

1. AWS Clean Rooms 差異隱私權僅支援使用 Amazon S3 後端 AWS Glue 資料表的查詢。它不支援使用 Snowflake 或 Amazon Athena 資料表進行查詢。

1. AWS Clean Rooms 差異隱私權不會處理計時攻擊。例如，在個別使用者貢獻大量資料列，並新增或移除此使用者會大幅變更查詢運算時間的情況下，這些攻擊是可能的。

1. AWS Clean Rooms 當 SQL 查詢可能因使用特定 SQL 建構而導致執行時間溢位或無效的轉換錯誤時，差異隱私權並不保證差異隱私權。

   下表列出一些但並非全部的 SQL 建構，這些建構可能會產生執行時間錯誤，並且應在分析範本中驗證。我們建議您核准分析範本，以將此類執行時間錯誤的機率降至最低，並定期檢閱查詢日誌，以判斷查詢是否符合協同合作協議。

   下列 SQL 建構容易發生溢位錯誤：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/clean-rooms/latest/userguide/dp-limitations.html)

1. CAST 資料類型格式化函數容易發生無效的轉換錯誤。

   您可以設定 [CloudWatch 為日誌群組建立指標篩選條件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html)，然後在該指標篩選條件上[建立 CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Alarm-On-Logs.html)，以便在遇到潛在溢位或轉換錯誤時接收提醒。

   具體而言，您應該監控錯誤代碼 `CastError`、`OverflowError`、`ConversionError`。這些錯誤代碼的存在表示潛在的側通道攻擊，但可能表示錯誤的 SQL 查詢。

   如需詳細資訊，請參閱[分析登入 AWS Clean Rooms](query-logs.md)。