

AWS Mainframe Modernization Service （受管執行期環境體驗） 不再向新客戶開放。對於與 AWS Mainframe Modernization Service （受管執行期環境體驗） 類似的功能，探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS 大型主機現代化可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

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

# AWS 大型主機執行期秘密的轉換
<a name="ba-runtime-config-app-secrets"></a>

某些包含登入資料的資源組態可以使用 AWS 秘密進一步保護。其目的是將關鍵資料存放在 AWS 秘密中，並在 YAML 組態中參考秘密，以便在 Apache Tomcat 啟動時即時收集秘密內容。

## Aurora 的秘密
<a name="ba-runtime-config-app-secrets-aur"></a>

Aurora 資料庫組態 （適用於 JICS、、Blusam客戶 db 等） 將使用內建[資料庫秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html)，這會自動從對應的資料庫填入所有相關欄位。

**注意**  
`dbname` 金鑰是選用的，取決於您的資料庫組態，它是否會進入秘密。您可以手動將其新增至該處，或將名稱提供給 YAML 檔案。

## 其他秘密
<a name="ba-runtime-config-app-secrets-other"></a>

其他秘密適用於具有單一密碼 （特別是受密碼保護的 redis 快取） 的資源。在這種情況下，必須使用[其他類型的秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)。

### 秘密的 YAML 參考
<a name="ba-runtime-config-app-secrets-reference"></a>

`application-main.yml` 可以參考各種資源的秘密 ARN：

### JICS 資料庫
<a name="jics-database"></a>

使用 的 JICS 資料庫登入資料 `spring.aws.jics.db.secret`

```
spring:
   aws:
     jics:
       db:
         dbname: jics
         secret: arn:aws:secretsmanager:XXXX
```

支援的 JICS 資料庫私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| 託管 | 主機名稱 | 
| port | 連接埠 | 
| dbname | 資料庫的名稱 | 
| 使用者名稱 | 使用者名稱 | 
| password | 密碼 | 
| engine | 資料庫引擎：Postgres、Oracle、Db2、Microsoft SQL Server | 
| currentSchema | 要使用的特定結構描述 （僅限 Db2 支援） | 
| sslConnection | 是否使用 SSL 連線 （僅限 Db2 支援） | 
| sslTrustStoreLocation | 用戶端上信任存放區的位置 （僅限 Db2 支援） | 
| sslTrustStorePassword | 用戶端上信任存放區的密碼 （僅限 Db2 支援） | 

**注意**  
資料庫的名稱會在秘密或 yaml 參考 中提供`spring.aws.jics.db.dbname`。

### Blusam 資料庫
<a name="blusam-database"></a>

Blusam 使用 的資料庫登入資料 `spring.aws.client.bluesam.db.secret`

```
spring:
   aws:
     client:
       bluesam:
         db:
           dbname: bluesam 
           secret: arn:aws:secretsmanager:XXXX
```

支援的Blusam資料庫私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| 託管 | 主機名稱 | 
| port | 連接埠 | 
| dbname | 資料庫的名稱 | 
| 使用者名稱 | 使用者名稱 | 
| password | 密碼 | 
| engine | 資料庫引擎：Postgres | 

**注意**  
資料庫的名稱會在秘密或 yaml 參考 中提供`spring.aws.client.bluesam.db.dbname`。

### 用戶端資料庫
<a name="client-database"></a>

用戶端`application-profile.yml`可以參考用戶端資料庫的秘密 ARN。這需要額外的 屬性來列出資料來源名稱 `spring.aws.client.datasources.names`。對於每個資料來源名稱，請在下列屬性中`ds_name`指定秘密 ARN：`spring.aws.client.datasources.ds_name.secret`。範例：

```
spring:
   aws:
     client:
       datasources:
         names: primary,host 
         primary:
           secret: arn:aws:secretsmanager:XXXX
         host:
           dbname: hostdb 
           secret: arn:aws:secretsmanager:XXXX
```

*名稱：主要、主機*：

一個範例，其中有兩個用戶端資料來源名為主要資料來源和主機，每個資料來源都有其資料庫和登入資料。

*dbname：hostdb*：

在此範例中，「主機」資料庫的名稱不在秘密中，而是在此處提供，而對於「主要」資料庫，它在秘密中。

支援的用戶端資料庫私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| 託管 | 主機名稱 | 
| port | 連接埠 | 
| dbname | 資料庫的名稱 | 
| 使用者名稱 | 使用者名稱 | 
| password | 密碼 | 
| engine | 資料庫引擎：Postgres、Oracle、Db2、Microsoft SQL Server | 
| currentSchema | 要使用的特定結構描述 （僅限 Db2 支援） | 
| sslConnection | 是否使用 SSL 連線 （僅限 Db2 支援） | 
| sslTrustStoreLocation | 用戶端上信任存放區的位置 （僅限 Db2 支援） | 
| sslTrustStorePassword | 用戶端上信任存放區的密碼 （僅限 Db2 支援） | 

### PGM 公用程式資料庫
<a name="pgm-utility-database"></a>

`application-utility-pgm.yml` 可以參考各種資源的秘密 ARN。
+  `spring.aws.client.datasources.primary` 
  + `secret`

     應用程式資料庫的秘密 ARN。

類型：字串
+ `type`

要使用的連線集區實作的完整名稱。

類型：字串

預設：`com.zaxxer.hikari.HikariDataSource`
+ `spring.aws.client.utility.pgm.datasources` 
  + `names`

資料來源名稱的清單。

類型：字串
+ `dsname` 
  + `dbname`

主機的名稱。

類型：字串
+ `secret`

主機資料庫的秘密 ARN。

類型：字串
+ `type`

要使用的連線集區實作的完整名稱。

類型：字串

預設：`com.zaxxer.hikari.HikariDataSource`

對於多資料來源秘密：

```
spring:
   aws:
     client:
       primary:
         secret: arn:aws:secretsmanager:XXXX
         type: dataSourceType
       utility:
         pgm:
           datasources:
             names: dsname1,dsname2,dsname3
               dsname1:
                 dbname: dbname1
                 secret: arn:aws:secretsmanager:XXXX
                 type: dataSourceType
               dsname2:
                 dbname: dbname2
                 secret: arn:aws:secretsmanager:XXXX
                 type: dataSourceType
               dsname3:
                 dbname: dbname3
                 secret: arn:aws:secretsmanager:XXXX
                 type: dataSourceType
```

### 沒有 XA 支援的私密金鑰
<a name="no-xa"></a>
+ 引擎 (postgres/oracle/db2/mssql)
+ port
+ dbname
+ currentSchema
+ 使用者名稱
+ password
+ url
+ sslConnection
+ sslTrustStoreLocation
+ sslTrustStorePassword

只有`postgres``sslMode`私密金鑰值 (`disable/allow/prefer/require/verify-ca/verify-full`) 和 `spring.aws.rds.ssl.cert-path` YAML 屬性可讓您使用 SSL 連線。

### XA 支援的私密金鑰
<a name="xa"></a>

如果用戶端資料庫使用 XA，則透過秘密值支援子 xa-properties。
+ 託管
+ port
+ dbname
+ currentSchema
+ 使用者名稱
+ password
+ url
+ sslConnection (true/false)
+ sslTrustStoreLocation
+ sslTrustStorePassword

不過，對於其他 xa-properties （例如 `maxPoolSize`或 `driverType`)，仍`spring.jta.atomikos.datasource.XXXX.unique-resource-name`必須提供一般 YAML 金鑰。

秘密值會覆寫 YAML 屬性。

### 預設超級管理員 BAC 和 JAC
<a name="bac-and-jac"></a>

您也可以設定 application-main.yml，透過指定 ARN，從 AWS Secrets Manager 擷取秘密中預設超級管理員使用者的使用者名稱和密碼。下列範例顯示如何在 YAML 檔案中宣告此秘密。

```
spring:
   aws:
     client:
       defaultSuperAdmin:
         secret: arn:aws:secretsmanager:XXXX
```

支援的預設超級管理員資料庫私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| 使用者名稱 | 使用者名稱。 | 
| password | 密碼。 | 

### OAuth2
<a name="oauth2"></a>

您也可以 AWS Secrets Manager 指定提供者和 ARN，將 `application-main.yml` 設定為從 擷取 OAuth2 用戶端秘密。供應商屬性的預設值為 Amazon Cognito。以下是 OAuth2 供應商 Keycloak 的範例組態：

```
spring:
   aws:
     client:
       provider: keycloak
       keycloak:
         secret: arn:aws:secretsmanager:XXXX
```

在此範例中，OAuth2 提供者 Keycloak 的用戶端秘密會從 AWS Secrets Manager 中指定的 ARN 擷取。此組態透過動態解析提供者名稱和對應的秘密 ARN 來支援多個提供者。

支援的 OAuth2 私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| client-secret | 授權伺服器在應用程式註冊過程中產生的秘密。 | 

### Redis 快取的 Secret Manager
<a name="ba-runtime-redis-secrets-properties"></a>

`application-main.yml` 檔案可以參考 Redis 快取的秘密 ARN。支援的項目為：
+ 使用 的 Gapwalk Redis 登入資料 `spring.aws.client.gapwalk.redis.secret`
+ 使用 的 Bluesam Redis 登入資料 `spring.aws.client.bluesam.redis.secret`
+ Bluesam 使用 鎖定 Redis 登入資料 `spring.aws.client.bluesam.locks.redis.secret`
+ 使用 的資料集目錄 Redis 憑證 `spring.aws.client.dataset.catalog.redis.secret`
+ 使用 的 JICS Redis 登入資料 `spring.aws.client.jics.redis.secret`
+ 使用 的工作階段 Redis 登入資料 `spring.aws.client.jics.redis.secret`
+ 使用 的工作階段追蹤器 Redis 登入資料 `spring.aws.client.session.tracker.redis.secret`
+ 使用 的 JICS TS 佇列 Redis 登入資料 `spring.aws.client.jics.queues.ts.redis.secret`
+ 使用 的 JCL 檢查點 Redis 憑證 `spring.aws.client.jcl.checkpoint.redis.secret`
+ Gapwalk 檔案使用 鎖定 Redis 登入資料 `spring.aws.client.gapwalk.files.locks.redis.secret`
+ Blu4IV 使用 鎖定 Redis 登入資料 `spring.aws.client.blu4iv.locks.redis.secret`

 下列範例示範如何在 YAML 檔案中宣告這些秘密。

```
spring:
   aws:
     client:
       gapwalk:
         redis:
           secret: arn:aws:secretsmanager:XXXX
       bluesam:
         locks:
           redis:
             secret: arn:aws:secretsmanager:XXXX
         redis:
           secret: arn:aws:secretsmanager:XXXX
       dataset:
         catalog:
           redis:
             secret: arn:aws:secretsmanager:XXXX
       jics:
         redis:
           secret: arn:aws:secretsmanager:XXXX
       session:
         tracker:
           redis:
             secret: arn:aws:secretsmanager:XXXX
       jics:
         queues:
           ts:
             redis:
               secret: arn:aws:secretsmanager:XXXX
       jcl:
         checkpoint:
           redis:
             secret: arn:aws:secretsmanager:XXXX
       gapwalk:
         files:
           locks:
             redis:
               secret: arn:aws:secretsmanager:XXXX
       blu4iv:
         locks:
           redis:
             secret: arn:aws:secretsmanager:XXXX
```

支援的 Redis 私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| hostname | Redis 伺服器主機名稱。 | 
| port | Redis 伺服器連接埠。 | 
| 使用者名稱 | 使用者名稱。 | 
| password | 密碼。 | 

### SSL 密碼設定的秘密管理員
<a name="ba-runtime-ssl-secrets-properties"></a>

`application-main.yml` 檔案可以參考 SSL 密碼設定的秘密 ARN。支援下列項目。
+ 使用 的 Gapwalk SSL 登入資料 `spring.aws.client.ssl.secret`

下列範例示範如何在 YAML 檔案中宣告這些秘密。

```
spring:
   aws:
     client:
       ssl:
         secret: arn:aws:secretsmanager:XXXX
```


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| trustStorePassword | 信任存放區密碼。 | 
| keyStorePassword | 金鑰存放區密碼。 | 

### IBM MQ 密碼設定的秘密管理員
<a name="ba-runtime-IBMMQ-secrets-properties"></a>

`application-main.yml` 檔案可以參考 IBM MQ 的秘密 ARN 設定。支援下列項目。
+ IBM MQ 連線會定義為清單，登入資料也是：

  `mq.queues.jmsMQQueueManagers[N].secret:`

  N 針對第一個連線從 0 開始。

下列範例示範如何在 YAML 檔案中宣告這些秘密。

```
mq.queues.jmsMQQueueManagers[0].secret: {{Secret-0-ARN}} 
mq.queues.jmsMQQueueManagers[1].secret: {{Secret-1-ARN}}
```

如需秘密 ARNs 的資訊，請參閱 [Secrets Manager 秘密中的內容？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html)

秘密中定義的屬性會覆寫其在 `jmsMQ` YAML 組態中的對應值。

如果在秘密中`queueManager`設定 ，它會覆寫 YAML 檔案中`mq.queues.jmsMQQueueManagers[N].jmsMQQueueManager`的值。


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| queueManager | IBM MQ 佇列管理員名稱。 | 
| appName | IBM MQ 應用程式名稱。 | 
| 通道 | IBM MQ 頻道名稱。 | 
| 託管 | IBM MQ 主機名稱。 | 
| port | IBM MQ 連接埠。 | 
| userId | IBM MQ 使用者名稱。 | 
| password | IBM MQ 使用者密碼。 | 
| maxPoolSize | IBM MQ 集區大小上限。 | 
| sslCipherKey | IBM MQ SSL 密碼套件。 | 

### JHDB 資料庫
<a name="JHDB-database"></a>

用戶端`application-jhdb.yml`檔案可以參考 JHDB 中繼資料資料庫ARNs。每個資料庫連線都需要唯一的名稱和對應的秘密 ARN，其中包含連線登入資料。資料庫名稱是以逗號分隔的清單定義，個別秘密 ARNs會對應至每個資料庫名稱。

```
spring:
   aws:
     jhdb:
       cnxs:
         datasources:
           names: DBD1,DBD2
           DBD1:  
             secret: arn:aws:secretsmanager:XXXX
           DBD2:
             secret: arn:aws:secretsmanager:XXXX
```

支援的用戶端資料庫私密金鑰：


| 私密金鑰 | 私密金鑰描述 | 
| --- | --- | 
| 託管 | 主機名稱。 | 
| port | 連接埠。 | 
| dbname | 資料庫的名稱。 | 
| 使用者名稱 | 使用者名稱。 | 
| password | 密碼。 | 
| engine | 資料庫引擎：Postgres （現在僅支援 Postgres)。 | 
| currentSchema | 要使用的特定結構描述。 | 