

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

# 使用 Valkey 和 Redis OSS AUTH 命令進行驗證
<a name="auth"></a>

**注意**  
**AUTH** 已由 取代[角色型存取控制 (RBAC) 規則數量](Clusters.RBAC.md)。所有無伺服器快取都必須使用 RBAC 進行身分驗證。

Valkey 和 Redis OSS 身分驗證字符或密碼可讓 Valkey 和 Redis OSS 在允許用戶端執行命令之前要求密碼，藉此改善資料安全性。僅適用於**AUTH**節點型叢集。

**Topics**
+ [ElastiCache for Valkey 和 Redis OSS 中的 AUTH 概觀](#auth-overview)
+ [將身分驗證套用至 ElastiCache for Valkey 和 Redis OSS 叢集](#auth-using)
+ [修改現有叢集上的 AUTH 字符](#auth-modifyng-token)
+ [從 RBAC 遷移至 AUTH](#Migrate-From-RBAC-to-AUTH)

## ElastiCache for Valkey 和 Redis OSS 中的 AUTH 概觀
<a name="auth-overview"></a>

當您**AUTH**搭配 ElastiCache for Valkey 和 Redis OSS 叢集使用 時，有一些改進。

特別是，在使用 AUTH 時，請注意這些 AUTH 字符或密碼限制：
+ 字符 (或密碼) 必須為 16 - 128 個可列印字元。
+ 非英數字元僅限使用 (\$1、&、\$1、\$1、^、<、>、-)。
+ AUTH 只能針對啟用傳輸中加密的 Valkey 或 Redis OSS 叢集啟用。

若要設定高強度的字符，建議您遵循嚴格的密碼政策，例如需符合以下要求：
+ 字符或密碼必須至少包含下列三種字元類型：
  + 大寫字元
  + 小寫字元
  + 數字 
  + 非英數字元 (`!`、`&`、`#`、`$`、`^`、`<`、`>`、`-`)
+ 字符或密碼不得包含字典單字或稍微修改的字典單字。
+ 字符或密碼不得與最近使用的字符相同或相似。

## 將身分驗證套用至 ElastiCache for Valkey 和 Redis OSS 叢集
<a name="auth-using"></a>

您可以要求使用者在字符保護的 Valkey 或 Redis OSS 伺服器上輸入字符 （密碼）。若要執行此操作，請在您建立複寫群組或叢集時加入有正確字符的參數 `--auth-token` (API: `AuthToken`)。而且也要在複寫群組或叢集的所有後續命令中加入。

下列AWS CLI操作會建立啟用傳輸中加密 (TLS) 和**AUTH**字符 的複寫群組`This-is-a-sample-token`。將子網路群組 `sng-test` 取代為已存在的子網路群組。

**重要參數**
+ **--engine** – 必須為 `valkey`或 `redis`。
+ **--engine-version** – 如果引擎是 Redis OSS，則 必須是 3.2.6、4.0.10 或更新版本。
+ **--transit-encryption-enabled** - 身分驗證及符合 HIPAA 資格的必要項目。
+ **--auth-token** - 符合 HIPAA 資格的必要項目。此值必須是此字符保護的 Valkey 或 Redis OSS 伺服器的正確字符。
+ **--cache-subnet-group** - 符合 HIPAA 資格的必要項目。

針對 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
    --replication-group-id authtestgroup \
    --replication-group-description authtest \
    --engine redis \ 
    --cache-node-type cache.m4.large \
    --num-node-groups 1 \
    --replicas-per-node-group 2 \    
    --transit-encryption-enabled \
    --auth-token This-is-a-sample-token \
    --cache-subnet-group sng-test
```

針對 Windows：

```
aws elasticache create-replication-group ^
    --replication-group-id authtestgroup ^
    --replication-group-description authtest ^
    --engine redis ^ 
    --cache-node-type cache.m4.large ^
    --num-node-groups 1 ^
    --replicas-per-node-group 2 ^    
    --transit-encryption-enabled ^
    --auth-token This-is-a-sample-token ^
    --cache-subnet-group sng-test
```

## 修改現有叢集上的 AUTH 字符
<a name="auth-modifyng-token"></a>

若要更輕鬆地更新身分驗證，您可以修改叢集上使用的**AUTH**字符。如果引擎版本為 Valkey 7.2 或更新版本，或 Redis 5.0.6 或更新版本，您可以進行此修改。ElastiCache 也必須啟用傳輸中加密。

Auth 字符修改支援兩種策略：ROTATE 和 SET。ROTATE 策略會將額外的 AUTH 字符新增至伺服器，同時保留先前的字符。SET 策略會更新伺服器，僅支援單一 AUTH 字符。使用 `--apply-immediately` 參數進行這些修改呼叫以立即套用變更。

### 輪換 AUTH 字符
<a name="auth-modifyng-rotate"></a>

若要使用新的 **AUTH 字符**更新 Valkey 或 Redis OSS 伺服器，請使用 `--auth-token` 參數呼叫 `ModifyReplicationGroup` API 做為新的**AUTH**字符，並使用`--auth-token-update-strategy`值 ROTATE 呼叫 。ROTATE 修改完成後，除了 `auth-token` 參數中指定的字符外，叢集還支援先前的 AUTH 字符。如果在 AUTH 權杖輪換之前未在複寫群組上設定 AUTH 權杖，則叢集除了支援在沒有身分驗證的情況下連線之外，還支援 `--auth-token` 參數中指定的 AUTH 權杖。請參閱 [設定 AUTH 字符](#auth-modifying-set) 以使用更新策略 SET 將 AUTH 權杖更新為必要。

**注意**  
如果您之前沒有設定 AUTH 字符，那麼一旦修改完成，除了 auth-token 參數中指定的字符之外，叢集將不支援任何 AUTH 字符。

如果在已支援兩個 AUTH 字符的伺服器上執行此修改，則在此操作期間也會移除最舊的 AUTH 字符。這可讓伺服器在特定時間支援最多兩個最新的 AUTH 字符。

此時，您可以更新用戶端以使用最新的 AUTH 字符以繼續。用戶端更新後，您可以使用 **AUTH** 字符輪換的 SET 策略 (於以下章節說明) 以僅開始使用新的字符。

下列AWS CLI操作會修改複寫群組以輪換**AUTH**字符 `This-is-the-rotated-token`。

針對 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
--replication-group-id authtestgroup \
--auth-token This-is-the-rotated-token \
--auth-token-update-strategy ROTATE \
--apply-immediately
```

針對 Windows：

```
aws elasticache modify-replication-group ^
--replication-group-id authtestgroup ^
--auth-token This-is-the-rotated-token ^
--auth-token-update-strategy ROTATE ^
--apply-immediately
```

### 設定 AUTH 字符
<a name="auth-modifying-set"></a>

若要更新 Valkey 或 Redis OSS 伺服器以支援單一必要**AUTH**字符，請使用與最後一個 AUTH 字符具有相同值的 `--auth-token` 參數呼叫 `ModifyReplicationGroup` API 操作，並使用值 呼叫 `--auth-token-update-strategy` 參數`SET`。SET 策略只能與具有 2 個 AUTH 字符或 1 個先前使用 ROTATE 策略之選用 AUTH 字符的叢集搭配使用。修改完成後，伺服器僅支援 auth-token 參數中指定的 AUTH 字符。

下列AWS CLI操作會修改複寫群組，將 AUTH 字符設定為 `This-is-the-set-token`。

針對 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
--replication-group-id authtestgroup \
--auth-token This-is-the-set-token \
--auth-token-update-strategy SET \
--apply-immediately
```

針對 Windows：

```
aws elasticache modify-replication-group ^
--replication-group-id authtestgroup ^
--auth-token This-is-the-set-token ^
--auth-token-update-strategy SET ^
--apply-immediately
```

### 在現有叢集上啟用身分驗證
<a name="auth-enabling"></a>

若要在現有的 Valkey 或 Redis OSS 伺服器上啟用身分驗證，請呼叫 `ModifyReplicationGroup` API 操作。使用 `--auth-token` 參數為新的字符，以及值為 ROTATE 的 `--auth-token-update-strategy` 呼叫 `ModifyReplicationGroup`。

ROTATE 修改完成後，叢集除了支援無需身分驗證的連線之外，還支援 `--auth-token` 參數中指定的**AUTH**字符。更新所有用戶端應用程式以使用 AUTH 字符驗證 Valkey 或 Redis OSS 後，請使用 SET 策略將 AUTH 字符標記為必要。只有啟用傳輸中加密 (TLS) 的 Valkey 和 Redis OSS 伺服器才支援啟用身分驗證。

## 從 RBAC 遷移至 AUTH
<a name="Migrate-From-RBAC-to-AUTH"></a>

如果您使用 Valkey 或 Redis OSS 角色型存取控制 (RBAC) 驗證使用者，如 中所述[角色型存取控制 (RBAC) 規則數量](Clusters.RBAC.md)，而且您想要遷移至 AUTH，請使用下列程序。您可以使用主控台或 CLI 進行遷移。

**使用主控台從 RBAC 遷移至 AUTH**

1. 登入AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 開啟 ElastiCache 主控台。

1. 從右上角的清單中，選擇您要修改之叢集所在的AWS區域。

1. 在導覽窗格中，選擇您要修改之叢集所執行的引擎。

   接著會出現所選引擎的叢集清單。

1. 在叢集清單中，針對您要修改的叢集，選擇其名稱。

1. 在 **Actions** (動作) 中，選擇 **Modify** (修改)。

   **修改**視窗隨即出現。

1. 針對**存取控制**，選擇 **Valkey AUTH 預設使用者存取權**或 **Redis OSS AUTH 預設使用者存取權**。

1. 在 **Valkey AUTH 權**杖或 **Redis OSS AUTH 權杖**下，設定新的權杖。

1. 選擇**預覽變更**，然後在下一個畫面上選擇**修改**。

**使用 從 RBAC 遷移至 AUTH AWS CLI**

使用下列其中一個命令，為您的 Valkey 或 Redis OSS 複寫群組設定新的選用**AUTH**權杖。請注意，選用的身分驗證字符將允許未經驗證的複寫群組存取權，直到使用以下步驟`SET`中的更新策略將身分驗證字符標記為必要為止。

針對 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
    --replication-group-id test \
    --remove-user-groups \
    --auth-token This-is-a-sample-token \
    --auth-token-update-strategy ROTATE \ 
    --apply-immediately
```

針對 Windows：

```
aws elasticache modify-replication-group ^
    --replication-group-id test ^
    --remove-user-groups ^
    --auth-token This-is-a-sample-token ^
    --auth-token-update-strategy ROTATE ^ 
    --apply-immediately
```

執行上述命令後，您可以使用新設定的選用 AUTH 權杖，更新您的 Valkey 或 Redis OSS 應用程式以驗證 ElastiCache 複寫群組。若要完成身分驗證字符輪換，請在下列後續命令`SET`中使用更新策略。這將視需要標示為選用的 AUTH 字符。身分驗證字符更新完成時，複寫群組狀態會顯示為 `ACTIVE`，且此複寫群組的所有連線都需要身分驗證。

針對 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
			--replication-group-id test \
			--auth-token This-is-a-sample-token \
			--auth-token-update-strategy SET \ 
			--apply-immediately
```

針對 Windows：

```
aws elasticache modify-replication-group ^
			--replication-group-id test ^
			--remove-user-groups ^
			--auth-token This-is-a-sample-token ^
			--auth-token-update-strategy SET ^ 
			--apply-immediately
```

如需詳細資訊，請參閱[使用 Valkey 和 Redis OSS AUTH 命令進行驗證](#auth)。

**注意**  
如果您需要停用 ElastiCache 叢集的存取控制，請參閱 [在 ElastiCache Valkey 或 Redis OSS 快取上停用存取控制](in-transit-encryption-disable.md)。