久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

kafka使用SASL認(rèn)證

 碼農(nóng)書館 2021-03-10

1. JAAS配置

Kafka使用Java認(rèn)證和授權(quán)服務(wù)(JAAS)進(jìn)行SASL配置。

  1. 為broker配置JAAS

    KafkaServer是每個(gè)KafkaServer/Broker使用JAAS文件中的部分名稱,。本節(jié)為broker提供了SASL配置選項(xiàng),,包括進(jìn)行broker之間通信所需的任何SASL客戶端連接。

    客戶端部分用于驗(yàn)證與zookeeper的SASL連接,。它還允許broker在zookeeper節(jié)點(diǎn)上設(shè)置SASL ACL,。并鎖定這些節(jié)點(diǎn),以便只有broker可以修改它,。所有的broker必須有相同的principal名稱,。如果要使用客戶端以外的名稱,設(shè)置zookeeper.sasl.client(例如,,-Dzookeeper.sasl.client = ZkClient),。

    默認(rèn)情況下,Zookeeper使用“zookeeper”作為服務(wù)名稱,。如果你需要修改,設(shè)置zookeeper.sasl.client.user(例如,,-Dzookeeper.sasl.client.username=zk)

  2. Kafka客戶端的JAAS配置

    客戶端可以使用客戶端配置屬性sasl.jaas.config或使用broker類似的靜態(tài)JAAS配置文件配置JAAS,。

    1. 添加一個(gè)名為KafkaClient的客戶端登錄部分的JAAS配置文件。 在KafkaClient中為所選機(jī)制配置登錄模塊,,如設(shè)置GSSAPI(Kerberos),PLAIN或SCRAM的示例中所述,。 例如,GSSAPI憑據(jù)可以配置為:


    2. 將JAAS配置文件位置作為JVM參數(shù)傳遞給每個(gè)客戶端JVM,。 例如:

      -Djava.security.auth.login.config=/etc/kafka/kafka_client_jaas.conf
    1. KafkaClient {
    2. com.sun.security.auth.module.Krb5LoginModule required
    3. useKeyTab=true
    4. storeKey=true
    5. keyTab="/etc/security/keytabs/kafka_client.keytab"
    6. principal="[email protected]";
    7. };
    1. JAAS配置使用客戶端配置屬性

      客戶端可以將JAAS配置指定為生產(chǎn)者或消費(fèi)者屬性,而不創(chuàng)建物理配置文件,。 此模式還使同一個(gè)JVM中的不同生產(chǎn)者和消費(fèi)者通過為每個(gè)客戶端指定不同的屬性來使用不同的憑據(jù)。 如果指定了靜態(tài)JAAS配置系統(tǒng)屬性java.security.auth.login.config和客戶端屬性sasl.jaas.config,,將使用客戶端屬性,。

      請(qǐng)參閱GSSAPI(Kerberos),PLAIN或SCRAM的配置例子,。

    2. 使用靜態(tài)配置文件的JAAS配置

      使用靜態(tài)JAAS配置文件來配置客戶端上的SASL認(rèn)證,。

2. SASL配置

SASL可以使用PLAINTEXT或SSL作為傳輸層,,分別使用安全協(xié)議SASL_PLAINTEXT或SASL_SSL。 如果使用SASL_SSL,,則還必須配置SSL,。

  1. SASL機(jī)制

    Kafka支持一下的SASL機(jī)制:

    • GSSAPI (Kerberos)

    • PLAIN

    • SCRAM-SHA-256

    • SCRAM-SHA-512

  2. 為Kafka broker配置SASL

    1. 在server.properteis配置一個(gè)SASL端口,SASL_PLAINTEXT或SASL_SSL至少增加一個(gè)到listeners,用逗號(hào)分隔:

       listeners=SASL_PLAINTEXT://host.name:port

      如果你只配置一個(gè)SASL端口(如果你需要broker使用SASL互相驗(yàn)證),,那么需要確保broker之間設(shè)置相同的SASL協(xié)議:

        security.inter.broker.protocol=SASL_PLAINTEXT (or SASL_SSL)
    2. 選擇一個(gè)或多個(gè)支持的機(jī)制,并通過以下的步驟為機(jī)器配置SASL,。在broker之間啟用多個(gè)機(jī)制:

  3. 為Kafka客戶端配置SASL

    SASL僅支持新的java生產(chǎn)者和消費(fèi)者,,不支持老的API。

    要在客戶端上配置SASL驗(yàn)證,,選擇在broker中啟用的客戶端身份驗(yàn)證的SASL機(jī)制,,并按照以下步驟配置所選機(jī)制的SASL。

3. 使用SASL/Kerberos認(rèn)證

  1. 預(yù)備知識(shí)

    1. sudo /usr/sbin/kadmin.local -q 'addprinc -randkey kafka/{hostname}@{REALM}'
    2. sudo /usr/sbin/kadmin.local -q "ktadd -k /etc/security/keytabs/{keytabname}.keytab kafka/{hostname}@{REALM}"
    1. Kerberos

      如果你已在使用Kerberos(如,,使用Active Directory),,則無需安裝重新安裝。否則,,你將需要安裝一個(gè),,Linux供應(yīng)商有Kerberos安裝和配置的簡短說明(UbuntuRadhat),。請(qǐng)注意,,如果你使用的是Oracle Java,你需要下載java版本的JCE策略文件,,將它們復(fù)制到 $JAVA_HOME/jre/lib/security中(注意:必須替換?。。?

    2. 創(chuàng)建Kerberos Principals

      如果你使用的是公司的Kerberos或Active Directory服務(wù)器,,請(qǐng)向Kerberos管理員詢問群集中每個(gè)broker的principal以及將使用Kerberos驗(yàn)證(通過客戶端和工具)訪問Kafka的每個(gè)操作系統(tǒng)用戶,。

      如果你自己安裝Kerberos,你需要通過以下命令創(chuàng)建你自己的principal,。


    3. 確保使用主機(jī)名可以訪問所有主機(jī) - Kerberos要求所有的host都可以用其FQDN解析所有主機(jī),。

  2. 配置Broker

    1. listeners=SASL_PLAINTEXT://host.name:port
    2. security.inter.broker.protocol=SASL_PLAINTEXT
    3. sasl.mechanism.inter.broker.protocol=GSSAPI
    4. sasl.enabled.mechanisms=GSSAPI
    1. -Djava.security.krb5.conf=/etc/kafka/krb5.conf
    2. -Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
    1. KafkaServer {
    2. com.sun.security.auth.module.Krb5LoginModule required
    3. useKeyTab=true
    4. storeKey=true
    5. keyTab="/etc/security/keytabs/kafka_server.keytab"
    6. principal="kafka/[email protected]";
    7. };
    8. // Zookeeper client authentication
    9. Client {
    10. com.sun.security.auth.module.Krb5LoginModule required
    11. useKeyTab=true
    12. storeKey=true
    13. keyTab="/etc/security/keytabs/kafka_server.keytab"
    14. principal="kafka/[email protected]";
    15. };
    1. 添加一個(gè)JAAS文件,類似下面的每個(gè)kafka broker的配置目錄,。這個(gè)例子我們姑且命名為kafka_server_jaas.conf(注意,,每個(gè)broker都應(yīng)該有自己的密鑰表)。


      JAAS文件中的KafkaServer部分告訴broker哪個(gè)principal要使用,,以及存儲(chǔ)該principal的keytab的位置。它允許broker使用本節(jié)中指定的keytab進(jìn)行登錄,。更多細(xì)節(jié)參見zookeeper的SASL配置,。

    2. 通過JAAS和krb5文件位置(可選的)作為JVM參數(shù)傳遞到每個(gè)broker,。(更多細(xì)節(jié)):


    3. 確保在JAAS文件的keytabs配置文件可被啟動(dòng)的Broker的操作系統(tǒng)員讀取。

    4. 在server.properties中配置SASL端口和SASL機(jī)制,,例如:


      我們還必須在server.properties配置服務(wù)器名稱,,應(yīng)與broker的principal名匹配,在上面的例子中,,principal是"kafka/[email protected]", 所以:

      sasl.kerberos.service.name=kafka
  3. 配置Kafka客戶端

    在客戶端上配置SASL認(rèn)證

    1. security.protocol=SASL_PLAINTEXT (or SASL_SSL)
    2. sasl.mechanism=GSSAPI
    3. sasl.kerberos.service.name=kafka
    1. sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
    2. useKeyTab=true \
    3. storeKey=true \
    4. keyTab="/etc/security/keytabs/kafka_client.keytab" \
    5. principal="[email protected]";
    1. sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
    2. useTicketCache=true;
    1. 客戶端(生產(chǎn)者,,消費(fèi)者,connect,,等等)用自己的principal進(jìn)行集群認(rèn)證(通常用相同名稱作為運(yùn)行客戶端的用戶),。因此,獲取或根據(jù)需要?jiǎng)?chuàng)建這些principal,。然后為每個(gè)客戶端配置JAAS配置屬性,。JVM中的不同客戶端通過指定不同的principal可以作為不同的用戶運(yùn)行。producer.properties或consumer.properties中的屬性sasl.jaas.config描述了像生產(chǎn)者和消費(fèi)者之類的客戶端如何連接到Kafka Broker的,。 以下是使用keytab的客戶端的示例配置(推薦用于長時(shí)間運(yùn)行的進(jìn)程):


      對(duì)于像kafka-console-consumer或kafka-console-producer這樣的命令行工具,,kinit可以與“useTicketCache=true"一起使用,如:


      客戶端的JAAS配置可以作為JVM參數(shù),,類似于broker,。 客戶端使用名為KafkaClient的login部分。 此選項(xiàng)僅允許JVM中所有客戶端連接的一個(gè)用戶,。

    2. 確保JAAS配置中的keytabls配置文件能被啟動(dòng)kafka客戶端的操作系統(tǒng)用戶讀取,。

    3. 可以將krb5文件位置作為JVM參數(shù)傳遞給每個(gè)客戶端JVM(有關(guān)詳細(xì)信息,請(qǐng)參閱此處):

        -Djava.security.krb5.conf=/etc/kafka/krb5.conf
    4. 在 producer.properties 或 consumer.properties中配置以下屬性:


  4. 使用SASL/PLAIN認(rèn)證

    SASL/PLAIN是一種簡單的用戶名/密碼的認(rèn)證機(jī)制,,通常與TLS加密一起使用,,以實(shí)現(xiàn)安全的認(rèn)證。Kafka支持SASL/PLAIN的默認(rèn)實(shí)現(xiàn),,可作為生產(chǎn)者的擴(kuò)展使用,。

    username用作ACL等配置已認(rèn)證的Principal

    • SASL/PLAIN應(yīng)僅用SSL作為傳輸層,,以確保在沒有加密的情況下不會(huì)在線上明文傳輸,。

    • Kafka中SASL/PLAIN的默認(rèn)實(shí)現(xiàn)是在JAAS配置文件中的用戶名和密碼,如下所示,。為了避免在磁盤上存儲(chǔ)密碼,,你可以自己用javax.security.auth.spi.LoginModule實(shí)現(xiàn),從外部源獲取用戶名和密碼,。登錄模塊應(yīng)該提供Subject的用戶名作為公共證書和密碼作為私人憑證,。 可以使用默認(rèn)實(shí)現(xiàn)org.apache.kafka.common.security.plain.PlainLoginModule作為參考。

    • 在生產(chǎn)者系統(tǒng)中,,外部認(rèn)證服務(wù)器可以實(shí)現(xiàn)密碼驗(yàn)證,。Kafka broker可以與這些服務(wù)器集成(通過添加自己實(shí)現(xiàn) javax.security.sasl.SaslServer),。在這個(gè)包路徑org.apache.kafka.common.security.plain中,包括在kafka的默認(rèn)的實(shí)現(xiàn),,可以作為一個(gè)參考的實(shí)例,。

    • 必須在JVM中安裝和注冊(cè)新的Providers(提供者)??梢酝ㄟ^將提供程序類添加到CLASSPATH或打包成jar文件并將其添加到JAVA_HOME/lib/ext來安裝提供者,。

    • 也可以通過添加Providers到安全屬性文件 JAVA_HOME/lib/security/java.security中靜態(tài)的注冊(cè)Providers。

       security.provider.n=providerClassName

      其中,,providerClassName是新Provider的全名,,n是優(yōu)先排序(較低的數(shù)字表明更高的優(yōu)先權(quán))

    • 此外,你可以在運(yùn)行時(shí)通過在客戶端應(yīng)用程序的開始調(diào)用Security.addProvider或登錄模塊中的靜態(tài)初始化程序來動(dòng)態(tài)注冊(cè)provider,。 例如:

        Security.addProvider(new PlainSaslServerProvider());
    • 更多細(xì)節(jié), 可查看 JCA,。

    1. 為producer.properties或consumer.properties中的每個(gè)客戶端配置JAAS。登錄模塊展示了客戶端如何連接Broker的(和生產(chǎn)者和消費(fèi)者一樣),。 以下是PLAIN機(jī)制的客戶端的示例配置:


      客戶端選擇用戶名和密碼為客戶端配置連接的用戶,。 在此示例中,客戶端以用戶alice連接到broker,。也可以通過在sasl.jaas.config中指定不同的用戶名和密碼,,JVM中的不同客戶端可以根據(jù)不同的用戶來進(jìn)行連接。

      客戶端的JAAS配置可以指定為類似于這里描述的broker作為JVM參數(shù),??蛻舳耸褂玫拿麨?code>KafkaClient。 此選項(xiàng)僅允許來自JVM的所有客戶端連接中的一個(gè)用戶,。

    2. 在producer.properties或consumer.properties中配置以下屬性:


    1. sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    2. username="alice" \
    3. password="alice-secret";
    1. security.protocol=SASL_SSL
    2. sasl.mechanism=PLAIN
    1. 在每個(gè)Kafka broker的config目錄下添加一個(gè)類似于下面的修改后的JAAS文件,,我們姑且將其稱為kafka_server_jaas.conf。


      此配置定義了2個(gè)用戶(adminalice),。 在KafkaServer中,,usernamepassword是broker用于初始化連接到其他的broker,在這個(gè)例子中,,admin是broker之間通信的用戶,。user_userName定義了所有連接到broker和broker驗(yàn)證的所有的客戶端連接包括其他broker的用戶密碼。

    2. 將JAAS配置文件位置作為JVM參數(shù)傳遞給每個(gè)Kafka broker:

        -Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
    3. 在server.properties中配置SASL端口和SASL機(jī)制,。 例如:


    1. KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required
    2. username="admin"
    3. password="admin-secret"
    4. user_admin="admin-secret"
    5. user_alice="alice-secret";
    6. };
    1. listeners=SASL_SSL://host.name:port
    2. security.inter.broker.protocol=SASL_SSL
    3. sasl.mechanism.inter.broker.protocol=PLAIN
    4. sasl.enabled.mechanisms=PLAIN
    1. 配置Kafka Brokers

    2. 配置kafka客戶端

      在客戶端上配置SASL身份驗(yàn)證:

    3. 在生產(chǎn)者中使用SASL/PLAIN

  5. 使用 SASL/SCRAM 認(rèn)證

    SCRAM(Salted Challenge Response Authentication Mechanism)是SASL機(jī)制家族的一種,,
    ,通過執(zhí)行用戶名/密碼認(rèn)證(如PLAIN和DIGEST-MD5)的傳統(tǒng)機(jī)制來解決安全問題,。 該機(jī)制在RFC 5802中定義,。Kafka支持SCRAM-SHA-256和SCRAM-SHA-512,可與TLS一起使用執(zhí)行安全認(rèn)證。 用戶名用作配置ACL等認(rèn)證的principal,。Kafka中的默認(rèn)SCRAM實(shí)現(xiàn)是在Zookeeper中存儲(chǔ)SCRAM的證書,,適用于Zookeeper在私有網(wǎng)絡(luò)上的Kafka安裝。 有關(guān)詳細(xì)信息,,請(qǐng)參閱安全注意事項(xiàng)。

    • 在kafka中SASL/SCRAM的默認(rèn)實(shí)現(xiàn)SCRAM證書存儲(chǔ)在Zookeeper中,,這適用于Zookeeper安全和私有網(wǎng)絡(luò)生產(chǎn)部署,。

    • Kafka僅支持強(qiáng)散列函數(shù)SHA-256和SHA-512,,最小迭代次數(shù)為4096.強(qiáng)散列函數(shù)結(jié)合強(qiáng)密碼和高迭代數(shù)可以防止強(qiáng)制攻擊(如果Zookeeper安全性受到威脅),。

    • SCRAM只能使用TLS加密,以防止攔截SCRAM交換。如果Zookeeper受到威脅,,則可以防止字典或暴力攻擊,,和防止偽裝模仿,。

    • 可以使用Zookeeper(不安全)安裝自定義登錄模塊來覆蓋默認(rèn)的SASL/SCRAM實(shí)現(xiàn),。 詳見這里,。

    • 更多的安全注意事項(xiàng),,可參考RFC5802,。

    1. 為每個(gè)客戶端配置JAAS配置(在producer.properteis或consumer.properteis)。登錄模塊展示了客戶端(如生產(chǎn)者和消費(fèi)者)如何連接到broker的,。下面是配置了SCRAM機(jī)制的客戶端的例子。


      客戶端使用username和password來配置客戶端連接的用戶,。在這個(gè)例子中,,客戶端使用用戶alice連接broker,。在JVM中不同的客戶端連接不同的用戶(通過在sasl.jaas.config中指定不同的用戶名和密碼),。

      客戶端的JAAS配置通過指定作為JVM的參數(shù)。使用名為KafkaCLient的客戶端登錄,。此選擇僅允許來自JVM的所有客戶端連接中的一個(gè)用戶。

    2. 在producer.properties或consumer.properties中配置以下參數(shù):


    1. sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    2. username="alice" \
    3. password="alice-secret";
    1. security.protocol=SASL_SSL
    2. sasl.mechanism=SCRAM-SHA-256 (or SCRAM-SHA-512)
    1. 在每個(gè)Kafka broker的config目錄下添加一個(gè)類似于下面的JAAS文件,,我們姑且將其稱為kafka_server_jaas.conf:


      其中,,broker使用KafkaServer中的用戶名和密碼來和其他broker進(jìn)行連接,。 在這個(gè)例子中,,admin是broker之間通信的用戶,。

    2. JAAS配置文件的位置作為JVM參數(shù)傳遞給每個(gè)Kafka broker:

         -Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
    3. 在server.properties中配置SASL端口和SASL機(jī)制。 例如:


    1. KafkaServer {
    2. org.apache.kafka.common.security.scram.ScramLoginModule required
    3. username="admin"
    4. password="admin-secret"
    5. };
    1. listeners=SASL_SSL://host.name:port
    2. security.inter.broker.protocol=SASL_SSL
    3. sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 (or SCRAM-SHA-512)
    4. sasl.enabled.mechanisms=SCRAM-SHA-256 (or SCRAM-SHA-512)
    1. 創(chuàng)建 SCRAM 證書

      Kafka的SCRAM實(shí)現(xiàn)使用Zookeeper作為證書存儲(chǔ),。通過使用kafka-configs.sh來創(chuàng)建證書,。 對(duì)于啟用的每個(gè)SCRAM機(jī)制,必須通過使用機(jī)制名稱添加配置來創(chuàng)建證書,。 必須在kafka broker啟動(dòng)之前創(chuàng)建broker之間通信的證書。 客戶端證書可以動(dòng)態(tài)創(chuàng)建和更新,,并且將使用更新后的證書來驗(yàn)證新的連接,。

      為用戶alice創(chuàng)建SCRAM憑證(密碼為alice-secret):

      bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=alice-secret],SCRAM-SHA-512=[password=alice-secret]' --entity-type users --entity-name alice

      如果未指定迭代數(shù),則使用默認(rèn)迭代數(shù)為4096,。 創(chuàng)建一個(gè)隨機(jī)salt,由salt,,迭代,,StoredKey和ServerKey組成的SCRAM標(biāo)識(shí),,都存儲(chǔ)在Zookeeper中。 有關(guān)SCRAM身份和各個(gè)字段的詳細(xì)信息,,請(qǐng)參閱RFC 5802,。

      以下示例中,,需要用戶admin進(jìn)行broker間通信,通過以下命令創(chuàng)建:

      bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin

      可以使用--describe列出現(xiàn)有的證書:

      bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users --entity-name alice

      可以使用--delete為一個(gè)或多個(gè)SCRAM機(jī)制刪除證書:

      bin/kafka-configs.sh --zookeeper localhost:2181 --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name alice
    2. 配置Kafka Broker

    3. 配置kafka客戶端

      在客戶端上配置SASL認(rèn)證

    4. SASL/SCRAM安全注意事項(xiàng)

  6. 在broker中啟用多個(gè)SASL機(jī)制

    1. security.inter.broker.protocol=SASL_PLAINTEXT (or SASL_SSL)
    2. sasl.mechanism.inter.broker.protocol=GSSAPI (or one of the other enabled mechanisms)
    1. KafkaServer {
    2. com.sun.security.auth.module.Krb5LoginModule required
    3. useKeyTab=true
    4. storeKey=true
    5. keyTab="/etc/security/keytabs/kafka_server.keytab"
    6. principal="kafka/[email protected]";
    7. org.apache.kafka.common.security.plain.PlainLoginModule required
    8. username="admin"
    9. password="admin-secret"
    10. user_admin="admin-secret"
    11. user_alice="alice-secret";
    12. };
    1. 在JAAS文件中的KafkaServer中啟用所有機(jī)制的登錄模塊配置。例如:


    2. 在server.properties中啟用SASL機(jī)制

      sasl.enabled.mechanisms=GSSAPI,PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
    3. 如果需要broker之間通訊,,則在server.properteis中指定SASL安全協(xié)議和機(jī)制,。


    4. 按照機(jī)制 - GSSAPI(Kerberos),,PLAIN和SCRAM中的具體步驟來配置啟用的SASL機(jī)制,。

  7. 在運(yùn)行的集群中修改SASL機(jī)制

    可以按照以下順序在正在運(yùn)行的群集中修改SASL機(jī)制:

    1. 將新SASL機(jī)制添加到每個(gè)broker上的server.properteis中的sasl.enabled.mechanisms上,。更新JAAS配置文件以包括這兩個(gè)機(jī)制,,如這里所述。 逐步重啟群集節(jié)點(diǎn),。

    2. 使用新機(jī)制重新啟動(dòng)集群。

    3. 要改變broker之間的通訊(如果需要),,則設(shè)置在server.properteis中的sasl.mechanism.inter.broker.protocol為新的機(jī)制并逐個(gè)重啟,。

    4. 要移除老的機(jī)制(如果需要),,從server.properties的sasl.enabled.mechanisms和JAAS配置文件中移除舊機(jī)制。然后依次重啟,。

鏈接:http://www./553
來源:OrcHome
著作權(quán)歸作者所有,。非商業(yè)轉(zhuǎn)載請(qǐng)注明出處,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多