国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號(hào)

Dapr 安全性之訪問(wèn)控制策略
2022-10-14    k8s技術(shù)圈

 

安全是 Dapr 的基礎(chǔ),本文我們將來(lái)說(shuō)明在分布式應(yīng)用中使用 Dapr 時(shí)的安全特性和能力,主要可以分為以下幾個(gè)方面。

  • 與服務(wù)調(diào)用和pub/sub APIs 的安全通信。
  • 組件上的安全策略并通過(guò)配置進(jìn)行應(yīng)用。
  • 運(yùn)維操作安全實(shí)踐。
  • 狀態(tài)安全,專(zhuān)注于靜態(tài)的數(shù)據(jù)。

Dapr 通過(guò)服務(wù)調(diào)用 API 提供端到端的安全性,能夠使用 Dapr 對(duì)應(yīng)用程序進(jìn)行身份驗(yàn)證并設(shè)置端點(diǎn)訪問(wèn)策略。

圖片安全通信

服務(wù)調(diào)用范圍訪問(wèn)策略

跨命名空間的服務(wù)調(diào)用

Dapr 應(yīng)用程序可以被限定在特定的命名空間,以實(shí)現(xiàn)部署和安全,當(dāng)然我們?nèi)匀豢梢栽诓渴鸬讲煌臻g的服務(wù)之間進(jìn)行調(diào)用。默認(rèn)情況下,服務(wù)調(diào)用支持通過(guò)簡(jiǎn)單地引用應(yīng)用 ID (比如 nodeapp) 來(lái)調(diào)用同一命名空間內(nèi)的服務(wù):

localhost:3500/v1.0/invoke/nodeapp/method/neworder
  • 1.

服務(wù)調(diào)用還支持跨命名空間的調(diào)用,在所有受支持的托管平臺(tái)上,Dapr 應(yīng)用程序 ID 符合包含目標(biāo)命名空間的有效 FQDN 格式,可以同時(shí)指定:

  • 應(yīng)用 ID (如nodeapp)。
  • 應(yīng)用程序運(yùn)行的命名空間(production)。

比如在 production 命名空間中的 nodeapp 應(yīng)用上調(diào)用 neworder 方法,則可以使用下面的方式:

localhost:3500/v1.0/invoke/nodeapp.production/method/neworder
  • 1.

當(dāng)使用服務(wù)調(diào)用在命名空間中調(diào)用應(yīng)用程序時(shí),我們可以使用命名空間對(duì)其進(jìn)行限定,特別在 Kubernetes 集群中的跨命名空間調(diào)用是非常有用的。

為服務(wù)調(diào)用應(yīng)用訪問(wèn)控制列表配置?

訪問(wèn)控制策略在配置文件中被指定,并被應(yīng)用于被調(diào)用應(yīng)用程序的 Dapr sidecar,對(duì)被調(diào)用應(yīng)用程序的訪問(wèn)是基于匹配的策略動(dòng)作,你可以為所有調(diào)用應(yīng)用程序提供一個(gè)默認(rèn)的全局動(dòng)作,如果沒(méi)有指定訪問(wèn)控制策略,默認(rèn)行為是允許所有調(diào)用應(yīng)用程序訪問(wèn)被調(diào)用的應(yīng)用程序。

在具體學(xué)習(xí)訪問(wèn)控制策略配置之前,我們需要先了解兩個(gè)概念:

  • TrustDomain? - “信任域”是管理信任關(guān)系的邏輯組。每個(gè)應(yīng)用程序都分配有一個(gè)信任域,可以在訪問(wèn)控制列表策略規(guī)范中指定。如果未定義策略規(guī)范或指定了空的信任域,則使用默認(rèn)值 public,該信任域用于在 TLS 證書(shū)中生成應(yīng)用程序的身份。
  • App Identity? - Dapr 請(qǐng)求 sentry 服務(wù)為所有應(yīng)用程序生成一個(gè) SPIFFE id,這個(gè) id 附加在 TLS 證書(shū)中。SPIFFE id 的格式為:spiffe://<trustdomain>/ns/<namespace>/<appid>,對(duì)于匹配策略,調(diào)用應(yīng)用的信任域、命名空間和應(yīng)用 ID 值從調(diào)用應(yīng)用的 TLS 證書(shū)中的 SPIFFE id 中提取,這些值與策略規(guī)范中指定的信任域、命名空間和應(yīng)用 ID 值相匹配。如果這三個(gè)都匹配,則更具體的策略將進(jìn)一步匹配。

訪問(wèn)控制策略會(huì)遵循如下所示的一些規(guī)則:

  • 如果未指定訪問(wèn)策略,則默認(rèn)行為是允許所有應(yīng)用訪問(wèn)被調(diào)用應(yīng)用上的所有方法
  • 如果未指定全局默認(rèn)操作且未定義應(yīng)用程序特定策略,則將空訪問(wèn)策略視為未指定訪問(wèn)策略,并且默認(rèn)行為是允許所有應(yīng)用程序訪問(wèn)被調(diào)用應(yīng)用程序上的所有方法
  • 如果未指定全局默認(rèn)操作,但已定義了一些特定于應(yīng)用程序的策略,則會(huì)采用更安全的選項(xiàng),即假設(shè)全局默認(rèn)操作拒絕訪問(wèn)被調(diào)用應(yīng)用程序上的所有方法
  • 如果定義了訪問(wèn)策略并且無(wú)法驗(yàn)證傳入的應(yīng)用程序憑據(jù),則全局默認(rèn)操作將生效
  • 如果傳入應(yīng)用的信任域或命名空間與應(yīng)用策略中指定的值不匹配,則應(yīng)用策略將被忽略并且全局默認(rèn)操作生效

下面是一些使用訪問(wèn)控制列表進(jìn)行服務(wù)調(diào)用的示例場(chǎng)景。

場(chǎng)景 1:拒絕所有應(yīng)用程序的訪問(wèn),除非 trustDomain = public、namespace = default、appId = app1,使用如下所示的配置,允許所有 appId = app1 的調(diào)用方法,并拒絕來(lái)自其他應(yīng)用程序的所有其他調(diào)用請(qǐng)求。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: deny
    trustDomain: "public"
    policies:
      - appId: app1
        defaultAction: allow
        trustDomain: "public"
        namespace: "default"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

場(chǎng)景 2:拒絕訪問(wèn)除 trustDomain = public、namespace = default、appId = app1、operation = op1 之外的所有應(yīng)用程序,使用此配置僅允許來(lái)自 appId = app1 的方法 op1,并且拒絕來(lái)自所有其他應(yīng)用程序的所有其他方法請(qǐng)求,包括 app1 上的其他方法。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: deny
    trustDomain: "public"
    policies:
      - appId: app1
        defaultAction: deny
        trustDomain: "public"
        namespace: "default"
        operations:
          - name: /op1
            httpVerb: ["*"]
            action: allow
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

場(chǎng)景 3:拒絕對(duì)所有應(yīng)用程序的訪問(wèn),除非 HTTP 的特定 verb 和 GRPC 的操作匹配,使用如下所示的配置,僅允許以下場(chǎng)景訪問(wèn),并且來(lái)自所有其他應(yīng)用程序的所有其他方法請(qǐng)求(包括 app1 或 app2 上的其他方法)都會(huì)被拒絕。

  • trustDomain = public、namespace = default、appID = app1、operation = op1、http verb = POST/PUT。
  • trustDomain = “myDomain”、namespace = “ns1”、appID = app2、operation = op2 并且應(yīng)用程序協(xié)議是 GRPC,僅允許來(lái)自appId = app1 的方法 op1 上的 POST/PUT 請(qǐng)求以及來(lái)自所有其他應(yīng)用程序的所有其他方法請(qǐng)求,包括 app1 上的其他方法,被拒絕。
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: deny
    trustDomain: "public"
    policies:
      - appId: app1
        defaultAction: deny
        trustDomain: "public"
        namespace: "default"
        operations:
          - name: /op1
            httpVerb: ["POST", "PUT"]
            action: allow
      - appId: app2
        defaultAction: deny
        trustDomain: "myDomain"
        namespace: "ns1"
        operations:
          - name: /op2
            action: allow
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

場(chǎng)景 4:允許訪問(wèn)除 trustDomain = public、namespace = default、appId = app1、operation = /op1/* 所有 http verb 之外的所有方法。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: allow
    trustDomain: "public"
    policies:
      - appId: app1
        defaultAction: allow
        trustDomain: "public"
        namespace: "default"
        operations:
          - name: /op1/*
            httpVerb: ["*"]
            action: deny
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

場(chǎng)景 5:允許訪問(wèn) trustDomain = public、namespace = ns1、appId = app1 的所有方法并拒絕訪問(wèn) trustDomain = public、namespace = ns2、appId = app1 的所有方法,此場(chǎng)景展示了如何指定具有相同應(yīng)用 ID 但屬于不同命名空間的應(yīng)用。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: allow
    trustDomain: "public"
    policies:
      - appId: app1
        defaultAction: allow
        trustDomain: "public"
        namespace: "ns1"
      - appId: app1
        defaultAction: deny
        trustDomain: "public"
        namespace: "ns2"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

場(chǎng)景 6:允許訪問(wèn)除 trustDomain = public、namespace = default、appId = app1、operation = /op1/**/a、所有 http 動(dòng)詞之外的所有方法。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  accessControl:
    defaultAction: allow
    trustDomain: "public"
    policies:
      - appId: app1
        defaultAction: allow
        trustDomain: "public"
        namespace: "default"
        operations:
          - name: /op1/**/a
            httpVerb: ["*"]
            action: deny
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

下面我們通過(guò)一個(gè)具體的示例來(lái)展示下訪問(wèn)控制策略的使用,同樣還是使用 quickstarts 示例中的 hello-world 進(jìn)行說(shuō)明。

git clone [-b <dapr_version_tag>] https://github.com/dapr/quickstarts.git
cd quickstarts/tutorials/hello-world/node
  • 1.
  • 2.

圖片hello world

該示例應(yīng)用中包含一個(gè) python 應(yīng)用去調(diào)用一個(gè) node.js 應(yīng)用程序,訪問(wèn)控制列表依靠 Dapr Sentry 服務(wù)來(lái)生成帶有 SPIFFE id 的 TLS 證書(shū)進(jìn)行認(rèn)證,這意味著 Sentry 服務(wù)必須在本地運(yùn)行或部署到你的托管環(huán)境,比如 Kubernetes 集群。

下面的 nodeappconfig 例子顯示了如何拒絕來(lái)自 pythonapp 的 neworder 方法的訪問(wèn),其中 pythonapp 是在 myDomain 信任域和 default 命名空間中,nodeapp 在 public 公共信任域中。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: nodeappconfig
spec:
  tracing:
    samplingRate: "1"
  accessControl:
    defaultAction: allow
    trustDomain: "public"
    policies:
      - appId: pythonapp
        defaultAction: allow
        trustDomain: "myDomain"
        namespace: "default"
        operations:
          - name: /neworder
            httpVerb: ["POST"]
            action: deny
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: pythonappconfig
spec:
  tracing:
    samplingRate: "1"
  accessControl:
    defaultAction: allow
    trustDomain: "myDomain"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

接下來(lái)我們先在本地自拓管模式下來(lái)使用啟用訪問(wèn)策略配置,首先需要在啟用 mTLS 的情況下在本地運(yùn)行 Sentry 服務(wù),我們可以直接在 https://github.com/dapr/dapr/releases 頁(yè)面下載對(duì)應(yīng)的 sentry 二進(jìn)制文件,比如我們這里是 Mac M1,則可以使用下面的命令直接下載:

$ wget https://github.com/dapr/dapr/releases/download/v1.8.4/sentry_darwin_arm64.tar.gz
$ tar -xvf sentry_darwin_arm64.tar.gz
  • 1.
  • 2.

然后為 Sentry 服務(wù)創(chuàng)建一個(gè)目錄以創(chuàng)建自簽名根證書(shū):

$ mkdir -p $HOME/.dapr/certs
  • 1.

使用以下命令在本地運(yùn)行 Sentry 服務(wù):

$ ./sentry --issuer-credentials $HOME/.dapr/certs --trust-domain cluster.local
INFO[0000] starting sentry certificate authority -- version 1.8.4 -- commit 18575823c74318c811d6cd6f57ffac76d5debe93  instance=MBP2022.local scope=dapr.sentry type=log ver=1.8.4
INFO[0000] configuration: [port]: 50001, [ca store]: default, [allowed clock skew]: 15m0s, [workload cert ttl]: 24h0m0s  instance=MBP2022.local scope=dapr.sentry.config type=log ver=1.8.4
WARN[0000] loading default config. couldn't find config name: daprsystem: stat daprsystem: no such file or directory  instance=MBP2022.local scope=dapr.sentry type=log ver=1.8.4
INFO[0000] starting watch on filesystem directory: /Users/cnych/.dapr/certs  instance=MBP2022.local scope=dapr.sentry type=log ver=1.8.4
INFO[0000] certificate authority loaded                  instance=MBP2022.local scope=dapr.sentry type=log ver=1.8.4
INFO[0000] root and issuer certs not found: generating self signed CA  instance=MBP2022.local scope=dapr.sentry.ca type=log ver=1.8.4
# ......
INFO[0000] sentry certificate authority is running, protecting ya'll  instance=MBP2022.local scope=dapr.sentry type=log ver=1.8.4
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

運(yùn)行成功后 Sentry 服務(wù)將在指定目錄中創(chuàng)建根證書(shū),可以通過(guò)如下所示的命令來(lái)配置環(huán)境變量指定相關(guān)證書(shū)路徑:

export DAPR_TRUST_ANCHORS=`cat $HOME/.dapr/certs/ca.crt`
export DAPR_CERT_CHAIN=`cat $HOME/.dapr/certs/issuer.crt`
export DAPR_CERT_KEY=`cat $HOME/.dapr/certs/issuer.key`
export NAMESPACE=default
  • 1.
  • 2.
  • 3.
  • 4.

然后我們就可以運(yùn)行 daprd 為啟用了 mTLS 的 node.js 應(yīng)用啟動(dòng) Dapr sidecar,并引用本地的 Sentry 服務(wù):

daprd --app-id nodeapp --dapr-grpc-port 50002 -dapr-http-port 3501 -metrics-port 9091 --log-level debug --app-port 3000 --enable-mtls --sentry-address localhost:50001 --config nodeappconfig.yaml
  • 1.

上面的命令我們通過(guò) --enable-mtls 啟用了 mTLS,通過(guò) --config 指定了上面的 nodeappconfig.yaml 這個(gè)配置文件。

然后啟動(dòng) node.js 應(yīng)用:

$ cd node && yarn
$ node app.js
Node App listening on port 3000!
  • 1.
  • 2.
  • 3.

同樣的方式在另外的終端中設(shè)置環(huán)境變量:

export DAPR_TRUST_ANCHORS=`cat $HOME/.dapr/certs/ca.crt`
export DAPR_CERT_CHAIN=`cat $HOME/.dapr/certs/issuer.crt`
export DAPR_CERT_KEY=`cat $HOME/.dapr/certs/issuer.key`
export NAMESPACE=default
  • 1.
  • 2.
  • 3.
  • 4.

然后運(yùn)行 daprd 為啟用了 mTLS 的 python 應(yīng)用啟動(dòng) Dapr sidecar,并引用本地的 Sentry 服務(wù):

daprd --app-id pythonapp  --dapr-grpc-port 50003 --metrics-port 9092 --log-level debug --enable-mtls --sentry-address localhost:50001 --config pythonappconfig.yaml
  • 1.

在重新開(kāi)一個(gè)終端直接啟動(dòng) Python 應(yīng)用即可:

$ cd python && pip3 install -r requirements.txt
$ python3 app.py
HTTP 403 => {"errorCode":"ERR_DIRECT_INVOKE","message":"fail to invoke, id: nodeapp, err: rpc error: code = PermissionDenied desc = access control policy has denied access to appid: pythonapp operation: neworder verb: POST"}
HTTP 403 => {"errorCode":"ERR_DIRECT_INVOKE","message":"fail to invoke, id: nodeapp, err: rpc error: code = PermissionDenied desc = access control policy has denied access to appid: pythonapp operation: neworder verb: POST"}
  • 1.
  • 2.
  • 3.
  • 4.

由于 nodeappconfig 文件中我們配置了對(duì) /neworder 接口的 POST 拒絕操作,所以應(yīng)該會(huì)在 python 應(yīng)用程序命令提示符中看到對(duì) node.js 應(yīng)用程序的調(diào)用失敗,如果我們將上面的 nodeappconfig 配置中的 action: deny 修改為 action: allow 并重新運(yùn)行應(yīng)用程序,然后我們應(yīng)該會(huì)看到此調(diào)用成功。

對(duì)于 Kubernetes 模式則更簡(jiǎn)單,只需要?jiǎng)?chuàng)建上述配置文件 nodeappconfig.yaml 和 pythonappconfig.yaml 并將其應(yīng)用于 Kubernetes 集群,然后在應(yīng)用的注解中添加 dapr.io/config: "pythonappconfig" 來(lái)指定配置即可開(kāi)啟服務(wù)訪問(wèn)控制。

annotations:
  dapr.io/enabled: "true"
  dapr.io/app-id: "pythonapp"
  dapr.io/config: "pythonappconfig"
  • 1.
  • 2.
  • 3.
  • 4.

Pub/sub 主題范圍訪問(wèn)策略

對(duì)于 Pub/sub 組件,你可以限制允許哪些主題類(lèi)型和應(yīng)用程序發(fā)布和訂閱特定主題。

命名空間或組件范圍可用于限制組件對(duì)特定應(yīng)用程序的訪問(wèn),這些添加到組件的應(yīng)用程序范圍僅限制具有特定 ID 的應(yīng)用程序能夠使用該組件。如下所示顯示了如何將兩個(gè)啟用 Dapr 的應(yīng)用程序(應(yīng)用程序 ID 為 app1 和 app2)授予名為 statestore 的 Redis 組件,該組件本身位于 production 命名空間中:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
  namespace: production
spec:
  type: state.redis
  version: v1
  metadata:
    - name: redisHost
      value: redis-master:6379
scopes:
  - app1
  - app2
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

除了這個(gè)通用組件的 scopes 范圍之外,發(fā)布/訂閱組件還可以限制以下內(nèi)容:

  • 可以使用哪些主題(發(fā)布或訂閱)。
  • 允許哪些應(yīng)用發(fā)布到特定主題。
  • 允許哪些應(yīng)用訂閱特定主題。

這被稱(chēng)為發(fā)布/訂閱主題范圍。我們可以為每個(gè)發(fā)布/訂閱組件定義發(fā)布/訂閱范圍,比如你可能有一個(gè)名為 pubsub? 的 pub/sub 組件,它具有一組范圍,另一個(gè) pubsub2 具有另外不同的范圍。

示例 1:主題訪問(wèn)范圍。如果你的主題包含敏感信息并且僅允許你的應(yīng)用程序的子集發(fā)布或訂閱這些信息,那么限制哪些應(yīng)用程序可以發(fā)布/訂閱主題可能會(huì)很有用。如下以下是三個(gè)應(yīng)用程序和三個(gè)主題的示例:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: pubsub
spec:
  type: pubsub.redis
  version: v1
  metadata:
    - name: redisHost
      value: "localhost:6379"
    - name: redisPassword
      value: ""
    - name: publishingScopes
      value: "app1=topic1;app2=topic2,topic3;app3="
    - name: subscriptionScopes
      value: "app2=;app3=topic1"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

這里我們?cè)O(shè)置了 publishingScopes 和 subscriptionScopes 兩個(gè)屬性,分別用于配置發(fā)布范圍和訂閱范圍。要拒絕應(yīng)用發(fā)布到任何主題,請(qǐng)將主題列表留空,比如我們這里配置的 app1=topic1;app2=topic2,topic3;app3=,其中的 app3= 就表示該應(yīng)用不允許發(fā)布到任何主題上去。

根據(jù)我們的配置下表顯示了允許哪些應(yīng)用程序發(fā)布到主題中:

 

Topic1

Topic2

Topic3

app1

X

 

 

app2

 

X

X

app3

 

 

 

下表顯示了哪些應(yīng)用程序可以訂閱主題:

 

Topic1

Topic2

Topic3

app1

X

X

X

app2

 

 

 

app3

X

 

 

?注意:如果未列出應(yīng)用程序(例如,subscriptionScopes? 中的 app1?),則允許它訂閱所有主題。因?yàn)椴皇褂?nbsp;allowedTopics? 并且 app1 沒(méi)有任何訂閱范圍,所以它也可以使用上面未列出的其他主題。

示例 2:限制允許的主題。如果 Dapr 應(yīng)用程序向其發(fā)送消息,則會(huì)創(chuàng)建一個(gè)主題,在某些情況下,應(yīng)管理此主題的創(chuàng)建。例如:

  • Dapr 應(yīng)用程序中生成主題名稱(chēng)的錯(cuò)誤可能導(dǎo)致創(chuàng)建無(wú)限數(shù)量的主題
  • 精簡(jiǎn)主題名稱(chēng)和總數(shù),防止主題無(wú)限增長(zhǎng)

在這些情況下,可以使用 allowedTopics 屬性進(jìn)行配置,以下就是三個(gè)允許主題的示例:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: pubsub
spec:
  type: pubsub.redis
  version: v1
  metadata:
    - name: redisHost
      value: "localhost:6379"
    - name: redisPassword
      value: ""
    - name: allowedTopics
      value: "topic1,topic2,topic3"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

示例 3:組合 allowedTopics 和范圍。有時(shí)你想結(jié)合這兩個(gè)范圍,因此只有一組固定的允許主題并為某些應(yīng)用程序指定范圍。以下是三個(gè)應(yīng)用程序和兩個(gè)主題的示例:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: pubsub
spec:
  type: pubsub.redis
  version: v1
  metadata:
    - name: redisHost
      value: "localhost:6379"
    - name: redisPassword
      value: ""
    - name: allowedTopics
      value: "A,B"
    - name: publishingScopes
      value: "app1=A"
    - name: subscriptionScopes
      value: "app1=;app2=A"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

注意這里我們沒(méi)有列出第三個(gè)應(yīng)用程序,如果沒(méi)有在范圍內(nèi)指定應(yīng)用程序,則允許它使用所有主題。

根據(jù)上面的配置下表顯示了允許哪個(gè)應(yīng)用程序發(fā)布到主題中:

 

A

B

C

app1

X

 

 

app2

X

X

 

app3

X

X

 

下表顯示了允許哪個(gè)應(yīng)用程序訂閱主題:

 

A

B

C

app1

 

 

 

app2

X

 

 

app3

X

X

 

 


熱詞搜索:

上一篇:簡(jiǎn)析縱深防御與零信任的應(yīng)用對(duì)比與發(fā)展融合
下一篇:最后一頁(yè)

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
国产日韩欧美亚洲| 亚洲国产精品嫩草影院| 久久国产手机看片| 久久视频这里只有精品| 欧美亚洲在线观看| 久久久久免费观看| 欧美精品v日韩精品v国产精品| 欧美日韩精品在线观看| 国产精品国产三级国产专区53 | 国产精品国产a级| 国产欧美日韩亚洲精品| 免费成人网www| 欧美午夜激情小视频| 国产视频一区免费看| 在线观看91精品国产入口| 亚洲区一区二| 欧美一级视频免费在线观看| 免费精品视频| 国产伦精品一区二区三区视频孕妇| 精品999在线播放| 亚洲一区精品视频| 欧美精品v日韩精品v韩国精品v | 欧美中文字幕视频在线观看| 99热免费精品| 老巨人导航500精品| 国产精品免费网站| 日韩亚洲欧美一区二区三区| 久久亚洲国产精品日日av夜夜| 欧美视频免费| 亚洲精品一区二区在线| 久久免费观看视频| 国产精品视频观看| 日韩视频中文| 欧美激情精品久久久久久蜜臀| 韩日午夜在线资源一区二区| 亚洲一区日韩| 欧美性大战久久久久久久| 亚洲精品视频在线| 免费人成网站在线观看欧美高清| 国产午夜精品视频免费不卡69堂| 亚洲午夜在线观看| 欧美日韩另类丝袜其他| 99国产精品自拍| 欧美精品自拍| aa级大片欧美| 国产精品久久久久aaaa樱花| 亚洲校园激情| 国产女人18毛片水18精品| 欧美一区二区三区在线看| 国产欧美丝祙| 久久亚洲国产成人| 亚洲乱码国产乱码精品精可以看| 欧美精品在线免费观看| 亚洲一区二区精品| 国产亚洲综合性久久久影院| 欧美中文字幕精品| 亚洲国产精品日韩| 国产精品麻豆成人av电影艾秋| 欧美一区成人| 亚洲国产精品热久久| 欧美视频亚洲视频| 久久精品国产第一区二区三区最新章节 | 国产精品影视天天线| 红桃视频国产一区| 久久久精品视频成人| 国产日韩欧美精品综合| 国内伊人久久久久久网站视频| 久久久久国产一区二区三区四区 | 欧美自拍丝袜亚洲| 牛夜精品久久久久久久99黑人| 国内精品福利| 久久精品成人| 在线日韩成人| 免费91麻豆精品国产自产在线观看| 在线观看亚洲a| 欧美国产成人精品| 国产精品99久久久久久有的能看| 国产精品分类| 久久精品卡一| 亚洲国产精品久久久久婷婷老年| 免费亚洲视频| 国产精品99久久久久久久女警 | 亚洲欧美日韩在线观看a三区 | 国产欧美日韩在线| 欧美一区二区三区在线看| 国产一区二区三区免费在线观看| 亚洲欧美中文另类| 国产一区二区三区久久| 蜜臀久久99精品久久久画质超高清 | 91久久午夜| 欧美日韩视频在线观看一区二区三区| 亚洲日本中文| 国产精品一二三四区| 久久久久国产精品厨房| 亚洲国产欧美日韩| 国产精品稀缺呦系列在线| 久久看片网站| 亚洲一区二区三| 激情欧美丁香| 久久午夜电影| 亚洲激情第一页| 国产精品黄视频| 美日韩精品免费| 亚洲国产一成人久久精品| 欧美视频在线免费看| 蜜桃av综合| 久久精品久久综合| 亚洲午夜性刺激影院| 樱花yy私人影院亚洲| 国产精品swag| 欧美理论电影在线播放| 久久亚洲精品一区二区| 亚洲欧美国产制服动漫| 日韩视频一区二区三区在线播放免费观看 | 欧美日韩国产bt| 午夜精品久久久| 99www免费人成精品| 韩日成人在线| 国产精品视频久久| 欧美www在线| 久久av资源网站| 亚洲伊人久久综合| 日韩香蕉视频| 亚洲日本精品国产第一区| 好看的日韩视频| 国产一区亚洲一区| 在线免费精品视频| 国产午夜精品理论片a级大结局| 欧美亚州一区二区三区| 欧美激情免费观看| 欧美激情二区三区| 欧美成人午夜激情视频| 欧美午夜一区二区三区免费大片 | 一本色道久久综合亚洲精品不卡| 黑人一区二区| 国产亚洲一区二区精品| 国产精品sss| 久久久噜噜噜久噜久久| 亚洲一区二区在线观看视频| 99亚洲视频| 亚洲最新色图| 一区二区激情小说| 一区二区三区视频在线| 亚洲视频一区二区| 一本久道久久综合婷婷鲸鱼| 99re在线精品| 一区二区三区精品国产| 亚洲视频在线观看免费| 亚洲一区久久久| 欧美一区二区精美| 老司机免费视频一区二区| 久久综合久久久| 欧美精品电影在线| 国产精品久久久久久久免费软件 | 亚洲欧美日韩国产中文| 亚洲综合99| 久久久久久久欧美精品| 男女av一区三区二区色多| 欧美精品一区二区久久婷婷| 欧美日韩一区二区在线视频 | 国产麻豆日韩欧美久久| 国产日韩精品一区二区| 精品二区视频| 99riav久久精品riav| 狠狠爱www人成狠狠爱综合网| 国产日韩精品一区二区| 在线日本成人| 日韩亚洲精品在线| 欧美在线一二三区| 欧美大片18| 欧美日韩一区二区在线观看视频| 国产视频一区在线观看| 亚洲三级电影全部在线观看高清| 亚洲最新中文字幕| 久久久免费观看视频| 欧美日韩国产电影| 亚洲第一区在线观看| 午夜电影亚洲| 亚洲欧美综合v| 欧美激情一区二区久久久| 一区二区三区亚洲| 亚洲尤物在线| 欧美国产国产综合| 国产日韩欧美成人| 在线视频中文亚洲| 久久精品亚洲一区二区| 国产综合色产在线精品| 久久噜噜噜精品国产亚洲综合| 久久九九免费视频| 亚洲日本视频| 欧美一区网站| 久久久久综合网| 欧美1区3d| 精品不卡一区| 久久精品国产第一区二区三区| 欧美一区二区视频在线观看| 在线日韩中文| 美女图片一区二区| 黄色成人在线免费| 欧美日韩免费看|