|
23 | 23 | #endif |
24 | 24 |
|
25 | 25 | // Encryption key expiration constants |
26 | | -#define ENCRYPT_KEY_EXPIRE_DAYS 30 |
27 | | -#define MILLISECONDS_PER_DAY (24 * 3600 * 1000) |
28 | | -#define ENCRYPT_KEY_EXPIRE_THRESHOLD ((int64_t)ENCRYPT_KEY_EXPIRE_DAYS * MILLISECONDS_PER_DAY) |
| 26 | +#define MILLISECONDS_PER_DAY (24 * 3600 * 1000) |
29 | 27 |
|
30 | 28 | static void *dmStatusThreadFp(void *param) { |
31 | 29 | SDnodeMgmt *pMgmt = param; |
@@ -85,14 +83,17 @@ static void *dmKeySyncThreadFp(void *param) { |
85 | 83 | if (interval >= tsStatusIntervalMs) { |
86 | 84 | // Sync keys periodically (every 30 seconds) or on first run |
87 | 85 | if (tsEncryptKeysStatus == TSDB_ENCRYPT_KEY_STAT_LOADED) { |
88 | | - // Check if encryption keys are expired |
| 86 | + // Check if encryption keys are expired based on configured threshold |
| 87 | + int64_t keyExpirationThreshold = (int64_t)tsKeyExpirationDays * MILLISECONDS_PER_DAY; |
89 | 88 | int64_t svrKeyAge = curTime - tsSvrKeyUpdateTime; |
90 | 89 | int64_t dbKeyAge = curTime - tsDbKeyUpdateTime; |
91 | 90 |
|
92 | | - if (svrKeyAge > ENCRYPT_KEY_EXPIRE_THRESHOLD || dbKeyAge > ENCRYPT_KEY_EXPIRE_THRESHOLD) { |
93 | | - dWarn("encryption keys may be expired, svrKeyAge:%" PRId64 " days, dbKeyAge:%" PRId64 |
94 | | - " days, attempting reload", |
95 | | - svrKeyAge / MILLISECONDS_PER_DAY, dbKeyAge / MILLISECONDS_PER_DAY); |
| 91 | + if (svrKeyAge > keyExpirationThreshold || dbKeyAge > keyExpirationThreshold) { |
| 92 | + const char *action = (strcmp(tsKeyExpirationStrategy, "ALARM") == 0) ? "warning" : "attempting reload"; |
| 93 | + dWarn("encryption keys may be expired (threshold:%d days, strategy:%s), svrKeyAge:%" PRId64 |
| 94 | + " days, dbKeyAge:%" PRId64 " days, %s", |
| 95 | + tsKeyExpirationDays, tsKeyExpirationStrategy, svrKeyAge / MILLISECONDS_PER_DAY, |
| 96 | + dbKeyAge / MILLISECONDS_PER_DAY, action); |
96 | 97 | #if defined(TD_ENTERPRISE) && defined(TD_HAS_TAOSK) |
97 | 98 | // Try to reload keys from file |
98 | 99 | char masterKeyFile[PATH_MAX] = {0}; |
@@ -139,19 +140,20 @@ static void *dmKeySyncThreadFp(void *param) { |
139 | 140 | // Check if keys are still expired after reload |
140 | 141 | svrKeyAge = curTime - tsSvrKeyUpdateTime; |
141 | 142 | dbKeyAge = curTime - tsDbKeyUpdateTime; |
142 | | - if (svrKeyAge > ENCRYPT_KEY_EXPIRE_THRESHOLD || dbKeyAge > ENCRYPT_KEY_EXPIRE_THRESHOLD) { |
143 | | - dError("encryption keys are still expired after reload, svrKeyAge:%" PRId64 " days, dbKeyAge:%" PRId64 |
144 | | - " days, please rotate keys", |
145 | | - svrKeyAge / MILLISECONDS_PER_DAY, dbKeyAge / MILLISECONDS_PER_DAY); |
| 143 | + if (svrKeyAge > keyExpirationThreshold || dbKeyAge > keyExpirationThreshold) { |
| 144 | + dError("encryption keys are still expired after reload (threshold:%d days), svrKeyAge:%" PRId64 |
| 145 | + " days, dbKeyAge:%" PRId64 " days, please rotate keys", |
| 146 | + tsKeyExpirationDays, svrKeyAge / MILLISECONDS_PER_DAY, dbKeyAge / MILLISECONDS_PER_DAY); |
146 | 147 | } else { |
147 | | - dInfo("successfully reloaded encryption keys, svrKeyAge:%" PRId64 " days, dbKeyAge:%" PRId64 " days", |
148 | | - svrKeyAge / MILLISECONDS_PER_DAY, dbKeyAge / MILLISECONDS_PER_DAY); |
| 148 | + dInfo("successfully reloaded encryption keys, svrKeyAge:%" PRId64 " days, dbKeyAge:%" PRId64 |
| 149 | + " days (threshold:%d days)", |
| 150 | + svrKeyAge / MILLISECONDS_PER_DAY, dbKeyAge / MILLISECONDS_PER_DAY, tsKeyExpirationDays); |
149 | 151 | } |
150 | 152 | } else { |
151 | 153 | dError("failed to reload encryption keys since %s", tstrerror(code)); |
152 | 154 | } |
153 | 155 | #endif |
154 | | - } |
| 156 | + } |
155 | 157 | } else if (tsEncryptKeysStatus == TSDB_ENCRYPT_KEY_STAT_DISABLED) { |
156 | 158 | dInfo("encryption keys are disabled, stopping key sync thread"); |
157 | 159 | break; |
@@ -767,6 +769,9 @@ static void dmProcessMgmtQueue(SQueueInfo *pInfo, SRpcMsg *pMsg) { |
767 | 769 | case TDMT_MND_ALTER_ENCRYPT_KEY: |
768 | 770 | code = dmProcessAlterEncryptKeyReq(pMgmt, pMsg); |
769 | 771 | break; |
| 772 | + case TDMT_MND_ALTER_KEY_EXPIRATION: |
| 773 | + code = dmProcessAlterKeyExpirationReq(pMgmt, pMsg); |
| 774 | + break; |
770 | 775 | case TDMT_DND_RELOAD_DNODE_TLS: |
771 | 776 | code = dmProcessReloadTlsConfig(pMgmt, pMsg); |
772 | 777 | // code = dmProcessReloadEncryptKeyReq(pMgmt, pMsg); |
|
0 commit comments