@@ -0,0 +1,53 @@
|
||||
package oci
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 日志回传链路资源命名与描述文案的集中定义。
|
||||
// 目标:让每租户派生互异的中性资源名,避免跨租户恒定字面量成为「共用同一套 oci-portal」的指纹。
|
||||
|
||||
// relayNames 是按 tenancy 派生的一组资源名。
|
||||
type relayNames struct {
|
||||
TopicPrefix string // 例: "c3f2a1b0-audit",Topic 最终名再加短随机后缀
|
||||
PolicyName string // 例: "c3f2a1b0-audit-p"
|
||||
ConnectorName string // 例: "c3f2a1b0-audit"
|
||||
}
|
||||
|
||||
// relayResourceNames 由 tenancyOCID 派生一组稳定的中性资源名。
|
||||
// SHA-256 前 4 字节做前缀,同 tenancy 每次调用结果一致(幂等查找依赖此性质)。
|
||||
func relayResourceNames(tenancyOCID string) relayNames {
|
||||
sum := sha256.Sum256([]byte(tenancyOCID))
|
||||
prefix := hex.EncodeToString(sum[:4])
|
||||
return relayNames{
|
||||
TopicPrefix: prefix + "-audit",
|
||||
PolicyName: prefix + "-audit-p",
|
||||
ConnectorName: prefix + "-audit",
|
||||
}
|
||||
}
|
||||
|
||||
// relayTopicNewName 按给定前缀 + 4 字节随机后缀生成 Topic 名,规避 ONS 删除保留期。
|
||||
func relayTopicNewName(prefix string) (string, error) {
|
||||
buf := make([]byte, 4)
|
||||
if _, err := rand.Read(buf); err != nil {
|
||||
return "", fmt.Errorf("topic name suffix: %w", err)
|
||||
}
|
||||
return prefix + "-" + hex.EncodeToString(buf), nil
|
||||
}
|
||||
|
||||
// 描述文案:中性英文,不含品牌明文;集中于此便于后续再调整。
|
||||
const (
|
||||
relayTopicDescNew = "Audit event relay endpoint"
|
||||
relayPolicyDescNew = "Allow Service Connector to publish audit events to notification topic"
|
||||
)
|
||||
|
||||
// legacyRelay* 仅用于识别旧版本(硬编码 ociportal-logs*)创建的存量资源,不用于新建。
|
||||
// 新租户完全走 relayResourceNames 派生;存量租户 fallback 命中后描述会一次性刷新为中性文案。
|
||||
const (
|
||||
legacyRelayTopicPrefix = "ociportal-logs"
|
||||
legacyRelayPolicyName = "ociportal-logs-sch"
|
||||
legacyRelayConnectorName = "ociportal-logs"
|
||||
)
|
||||
Reference in New Issue
Block a user