Service Bus-hozzáférés-vezérlés közös hozzáférésű jogosultságkódokkal

Ez a cikk a közös hozzáférésű jogosultságkódokat (SAS) ismerteti, hogyan működnek, és hogyan használhatók platformfüggetlen módon az Azure Service Bus használatával.

A SAS a Service Bushoz való hozzáférést egy névtéren vagy üzenetküldési entitáson (üzenetsoron vagy témakörön) konfigurált engedélyezési szabályok alapján védi. Az engedélyezési szabálynak van egy neve, meghatározott jogosultságokkal van társítva, és titkosítási kulcsokat tartalmaz. A szabály nevét és kulcsát a Service Bus SDK-val vagy a saját kódjában használhatja SAS-jogkivonat létrehozásához. Az ügyfél ezután átadhatja a jogkivonatot a Service Busnak, hogy igazolja a kért művelet engedélyezését.

Feljegyzés

Az Azure Service Bus támogatja a Service Bus-névtérhez és annak entitásaihoz való hozzáférés engedélyezését a Microsoft Entra ID használatával. A Microsoft Entra ID által visszaadott OAuth 2.0 jogkivonatot használó felhasználók vagy alkalmazások engedélyezése kiváló biztonságot és egyszerű használatot biztosít a közös hozzáférésű jogosultságkódokkal (SAS) szemben. A Microsoft Entra-azonosítóval nincs szükség a jogkivonatok kódban való tárolására, és nem kockáztathatja a biztonsági réseket.

A Microsoft azt javasolja, hogy ha lehetséges, használja a Microsoft Entra ID-t az Azure Service Bus-alkalmazásokkal. További információért tekintse át az alábbi cikkeket:

A Service Bus-névtér helyi vagy SAS-kulcsos hitelesítését letilthatja, és csak a Microsoft Entra-hitelesítést engedélyezheti. Részletes útmutatásért tekintse meg a helyi hitelesítés letiltása című témakört.

Az SAS áttekintése

A közös hozzáférésű jogosultságkódok egyszerű jogkivonatokat használó jogcímalapú engedélyezési mechanizmusok. SAS használata esetén a kulcsok soha nem kerülnek a vezetékre. A kulcsok a szolgáltatás által később ellenőrizhető kriptográfiai aláírási információkhoz használhatók. Az SAS a felhasználónévhez és a jelszósémához hasonlóan használható, ahol az ügyfél azonnal rendelkezik egy engedélyezési szabály nevével és egy egyező kulccsal. Az SAS az összevont biztonsági modellhez hasonlóan használható, ahol az ügyfél egy korlátozott ideig korlátozott és aláírt hozzáférési jogkivonatot kap egy biztonsági jogkivonat-szolgáltatástól anélkül, hogy az aláírási kulcs birtokába jut.

A Service Bus SAS-hitelesítése a társított hozzáférési jogosultságokkal rendelkező nevesített megosztott hozzáférés-engedélyezési szabályzatokkal , valamint egy elsődleges és másodlagos titkosítási kulcspárral van konfigurálva. A kulcsok 256 bites értékek a 64-es alapszintű ábrázolásban. A szabályokat a névtér szintjén, Service Bus-üzenetsorokon és témakörökben konfigurálhatja.

Feljegyzés

Ezek a kulcsok egyszerű szöveges sztringek, amelyek alapszintű 64-es megjelenítést használnak, és használat előtt nem szabad dekódolni őket.

A közös hozzáférésű jogosultságkód jogkivonata tartalmazza a választott engedélyezési szabályzat nevét, a elérni kívánt erőforrás URI-ját, egy lejárati pillanatot és egy HMAC-SHA256 titkosítási aláírást, amely ezeken a mezőkön a kiválasztott engedélyezési szabály elsődleges vagy másodlagos titkosítási kulcsával van kiszámítva.

Megosztott hozzáférés-engedélyezési szabályzatok

Minden Service Bus-névtér és minden Service Bus-entitás rendelkezik szabályokból álló közös hozzáférés-engedélyezési szabályzattal. A névtér szintjén lévő szabályzat a névtérben lévő összes entitásra vonatkozik, függetlenül az egyéni szabályzatkonfigurációjuktól.

Minden engedélyezési házirend-szabály esetében három információ közül választhat: név, hatókör és jogosultságok. A név csak ez; egy egyedi név ezen a hatókörön belül. A hatókör elég egyszerű: ez a szóban forgó erőforrás URI-ja. Service Bus-névtér esetén a hatókör a teljes névtér, például https://<yournamespace>.servicebus.windows.net/.

A szabályzatszabály által biztosított jogok a következők kombinációja lehetnek:

  • Küldés – Jogot biztosít az entitásnak küldött üzenetek küldésére
  • Figyelés – Jogosultságot biztosít a fogadásra (üzenetsor, előfizetések) és az összes kapcsolódó üzenetkezelésre
  • Kezelés – Jogot biztosít a névtér topológiájának kezelésére, beleértve az entitások létrehozását és törlését

A Kezelés jog tartalmazza a Küldés és figyelés jogosultságot.

A névtér- vagy entitásszabályzatok legfeljebb 12 közös hozzáférésű hozzáférés-engedélyezési szabályt tartalmazhatnak, amelyek három szabálykészletet biztosítanak, amelyek mindegyike lefedi az alapvető jogokat, valamint a Küldés és figyelés kombinációját. Ez a korlát entitásonként van, ami azt jelenti, hogy a névtér és minden entitás legfeljebb 12 közös hozzáférésű hozzáférés-engedélyezési szabmával rendelkezhet. Ez a korlát aláhúzza, hogy az SAS-szabályzattároló nem felhasználói vagy szolgáltatásfiók-tárolónak készült. Ha az alkalmazásnak felhasználói vagy szolgáltatásidentitások alapján kell hozzáférést biztosítania a Service Bushoz, olyan biztonsági jogkivonat-szolgáltatást kell implementálnia, amely SAS-jogkivonatokat ad ki a hitelesítés és a hozzáférés-ellenőrzés után.

Az engedélyezési szabályhoz elsődleges kulcs és másodlagos kulcs tartozik. Ezek a kulcsok kriptográfiailag erős kulcsok. Ne veszítsd el őket, és ne szivárogtasd ki őket – mindig elérhetők lesznek az Azure Portalon. A létrehozott kulcsok bármelyikét használhatja, és bármikor újra létrehozhatja őket. Ha újragenerál vagy módosít egy kulcsot a szabályzatban, az ezen a kulcson alapuló összes korábban kiadott jogkivonat azonnal érvénytelen lesz. Az ilyen jogkivonatok alapján létrehozott kapcsolatok azonban mindaddig működnek, amíg a jogkivonat le nem jár.

Service Bus-névtér létrehozásakor a rendszer automatikusan létrehoz egy RootManageSharedAccessKey nevű szabályzatszabályt a névtérhez. Ez a szabályzat a teljes névtérhez rendelkezik Kezelési engedélyekkel. Javasoljuk, hogy ezt a szabályt rendszergazdai gyökérfiókként kezelje, és ne használja az alkalmazásban. A portál névterének Megosztott hozzáférési szabályzatok lapján további szabályzatszabályokat hozhat létre a PowerShell vagy az Azure CLI használatával.

Javasoljuk, hogy rendszeresen újragenerálja a SharedAccessAuthorizationRule objektumban használt kulcsokat. Az elsődleges és másodlagos kulcshelyek léteznek, hogy fokozatosan válthassa a kulcsokat. Ha az alkalmazás általában az elsődleges kulcsot használja, az elsődleges kulcsot átmásolhatja a másodlagos kulcshelyre, és csak ezután hozhatja létre újra az elsődleges kulcsot. Az új elsődleges kulcs értéke ezután konfigurálható az ügyfélalkalmazásokba, amelyek továbbra is hozzáférnek a régi elsődleges kulcs használatával a másodlagos ponton. Az összes ügyfél frissítése után újragenerálhatja a másodlagos kulcsot, hogy végül kivonja a régi elsődleges kulcsot.

Ha tudja vagy gyanítja, hogy egy kulcs feltört, és vissza kell vonnia a kulcsokat, a SharedAccessAuthorizationRule PrimaryKey és SecondaryKey elemét is újragenerálhatja, és új kulcsokra cserélheti őket. Ez az eljárás érvényteleníti a régi kulcsokkal aláírt összes jogkivonatot.

A SAS használatával kapcsolatos ajánlott eljárások

Ha közös hozzáférésű jogosultságkódokat használ az alkalmazásokban, két lehetséges kockázattal kell tisztában lennie:

  • Ha kiszivárog egy SAS, azt bárki használhatja, aki beszerezi, ami veszélyeztetheti a Service Bus-erőforrásokat.
  • Ha egy ügyfélalkalmazáshoz biztosított SAS lejár, és az alkalmazás nem tud új SAS-t lekérni a szolgáltatásból, akkor az alkalmazás működése akadályozható lehet.

A megosztott hozzáférésű jogosultságkódok használatára vonatkozó alábbi javaslatok segíthetnek csökkenteni ezeket a kockázatokat:

  • Szükség esetén az ügyfelek automatikusan megújítják az SAS-t: Az ügyfeleknek jóval a lejárat előtt meg kell újítaniuk az SAS-t, hogy időt hagyhassanak az újrapróbálkozáshoz, ha az SAS-t biztosító szolgáltatás nem érhető el. Ha az SAS-t néhány azonnali, rövid élettartamú művelethez kell használni, amelyek várhatóan a lejárati időn belül befejeződnek, akkor szükségtelen lehet, mivel az SAS-t várhatóan nem újítják meg. Ha azonban olyan ügyfele van, amely rutinszerűen küld kéréseket SAS-en keresztül, akkor a lejárat lehetősége is felmerül. A legfontosabb szempont az sas rövid élettartamú (korábban már említett) igényének egyensúlyba hozása annak szükségességével, hogy az ügyfél elég korán kérjen megújítást (a sikeres megújítás előtt lejáró SAS miatti fennakadás elkerülése érdekében).
  • Legyen óvatos a SAS kezdési időpontjával: Ha az SAS kezdési idejét most állítja be, akkor az óraeltérés (a különböző gépek szerinti aktuális idő eltérései) miatt előfordulhat, hogy az első néhány percben időnként hibák jelentkeznek. A kezdési idő általában legalább 15 perc lehet a múltban. Vagy egyáltalán ne állítsa be, ami minden esetben azonnal érvényessé teszi. Általában ugyanez vonatkozik a lejárati időre is. Ne feledje, hogy bármilyen kérés esetén akár 15 percnyi óraeltérést is megfigyelhet bármelyik irányban.
  • Konkrétan a elérni kívánt erőforrással kell rendelkeznie: A biztonsági ajánlott eljárás a minimálisan szükséges jogosultságok biztosítása a felhasználó számára. Ha egy felhasználónak csak egyetlen entitás olvasási hozzáférésére van szüksége, akkor olvasási hozzáférést kell biztosítani az adott entitáshoz, és nem kell olvasási/írási/törlési hozzáférést adni az összes entitáshoz. Emellett csökkenti a kárt, ha egy SAS megsérül, mert az SAS-nek kevesebb hatalma van a támadó kezében.
  • Ne mindig használja az SAS-t: Előfordulhat, hogy egy adott művelettel kapcsolatos kockázatok meghaladják az SAS előnyeit. Ilyen műveletekhez hozzon létre egy középszintű szolgáltatást, amely az üzleti szabályok érvényesítése, hitelesítése és naplózása után ír a Service Busba.
  • Mindig használjon HTTP-ket: Mindig a Https használatával hozzon létre vagy terjesszen el egy SAS-t. Ha egy SAS-t http-en keresztül ad át, és elfogják, a középső csatolást végrehajtó támadó képes elolvasni az SAS-t, majd ugyanúgy használni, ahogy a kívánt felhasználó is, ami veszélyeztetheti a bizalmas adatokat, vagy lehetővé teszi az adatok rosszindulatú felhasználó általi sérülését.

Megosztott hozzáférésű jogosultságkód hitelesítésének konfigurálása

Konfigurálhatja a Megosztott hozzáférés engedélyezési szabályzatát Service Bus-névtereken, üzenetsorokon vagy témakörökben. A Service Bus-előfizetésen való konfigurálás jelenleg nem támogatott, de a névtérben vagy témakörben konfigurált szabályokkal biztonságossá teheti az előfizetésekhez való hozzáférést.

Diagram that shows an example namespace with a few authorization rules.

Ebben az ábrában a manageRuleNS, a sendRuleNS és a listenRuleNS engedélyezési szabályok az 1. üzenetsorra és a T1. témakörre is érvényesek, míg a ListenRuleQ és a sendRuleQ csak az 1. üzenetsorra, a sendRuleT pedig csak a T1. témakörre vonatkozik.

Közös hozzáférésű jogosultságkód jogkivonat létrehozása

Bármely ügyfél, amely hozzáféréssel rendelkezik egy engedélyezési szabály nevének nevéhez és annak egyik aláíró kulcsához, létrehozhat egy SAS-jogkivonatot. A jogkivonat egy sztring a következő formátumban történő létrehozásához jön létre:

SharedAccessSignature sig=<signature-string>&se=<expiry>&skn=<keyName>&sr=<URL-encoded-resourceURI>
  • se - A jogkivonat lejárati ideje azonnal. Az 1970. január 1-jei (UNIX) korszak 00:00:00 UTC óta eltelt másodperceket tükröző egész szám, amikor a jogkivonat lejár.

  • skn - Az engedélyezési szabály neve.

  • sr - A hozzáférés alatt álló erőforrás URL-kódolt URI-ja.

  • sig - URL-kódolású HMACSHA256 aláírás. A kivonatszámítás a következő pszeudokódhoz hasonlóan néz ki, és a nyers bináris kimenet 64-es bázisát adja vissza.

    urlencode(base64(hmacsha256(urlencode('https://<yournamespace>.servicebus.windows.net/') + "\n" + '<expiry instant>', '<signing key>')))
    

Fontos

Az SAS-jogkivonat különböző programozási nyelvek használatával történő létrehozására vonatkozó példákért lásd: SAS-jogkivonat létrehozása.

A jogkivonat tartalmazza a nem kivonatolt értékeket, hogy a címzett ugyanazokkal a paraméterekkel újrafordítsa a kivonatot, és ellenőrizze, hogy a kiállító rendelkezik-e érvényes aláírási kulccsal.

Az erőforrás URI-ja annak a Service Bus-erőforrásnak a teljes URI-ja, amelyhez a hozzáférés igényelve van. Például, http://<namespace>.servicebus.windows.net/<entityPath> vagy sb://<namespace>.servicebus.windows.net/<entityPath>; azaz http://contoso.servicebus.windows.net/contosoTopics/T1/Subscriptions/S3.

Az URI-nak százalékkódoltnak kell lennie.

Az aláíráshoz használt közös hozzáférés-engedélyezési szabályt az URI által megadott entitáson vagy annak egyik hierarchikus szülőjén kell konfigurálni. Például, http://contoso.servicebus.windows.net/contosoTopics/T1 vagy http://contoso.servicebus.windows.net az előző példában.

Az SAS-jogkivonat érvényes az összes olyan erőforrásra, amelynek előtagja a <resourceURI> használt.signature-string

Kulcsok újragenerálása

Javasoljuk, hogy rendszeresen újragenerálja a közös hozzáférésű hozzáférés engedélyezési házirendjében használt kulcsokat. Az elsődleges és másodlagos kulcshelyek léteznek, hogy fokozatosan válthassa a kulcsokat. Ha az alkalmazás általában az elsődleges kulcsot használja, az elsődleges kulcsot átmásolhatja a másodlagos kulcshelyre, és csak ezután hozhatja létre újra az elsődleges kulcsot. Az új elsődleges kulcs értéke ezután konfigurálható az ügyfélalkalmazásokba, amelyek továbbra is hozzáférnek a régi elsődleges kulcs használatával a másodlagos ponton. Az összes ügyfél frissítése után újragenerálhatja a másodlagos kulcsot, hogy végül kivonja a régi elsődleges kulcsot.

Ha tudja vagy gyanítja, hogy egy kulcs sérült, és vissza kell vonnia a kulcsokat, újra létrehozhatja a közös hozzáférésű hozzáférési engedélyezési házirend elsődleges és másodlagos kulcsát is, és új kulcsokkal helyettesítheti őket. Ez az eljárás érvényteleníti a régi kulcsokkal aláírt összes jogkivonatot.

Az elsődleges és másodlagos kulcsok azure portalon való újragenerálásához kövesse az alábbi lépéseket:

  1. Lépjen a Service Bus-névtérre az Azure Portalon.

  2. Válassza a megosztott hozzáférési szabályzatokat a bal oldali menüben.

  3. Válassza ki a szabályzatot a listából. Az alábbi példában a RootManageSharedAccessKey van kiválasztva.

  4. Az elsődleges kulcs újragenerálásához az SAS-házirend: RootManageSharedAccessKey lapon válassza az Elsődleges kulcs újragenerálása lehetőséget a parancssávon.

    Screenshot that shows how to regenerate a primary key.

  5. A másodlagos kulcs újragenerálásához az SAS-házirend: RootManageSharedAccessKey lapon válassza a ... lehetőséget a parancssávon, majd válassza a Másodlagos kulcs újragenerálása lehetőséget.

    Screenshot of SAS Policy page with Regenerate options selected.

Ha Az Azure PowerShellt használja, a parancsmaggal újragenerálhatja a New-AzServiceBusKey Service Bus-névtér elsődleges és másodlagos kulcsait. A paraméterrel megadhatja a generált elsődleges és másodlagos kulcsok értékeit -KeyValue is.

Ha Az Azure CLI-t használja, a paranccsal újragenerálhatja a az servicebus namespace authorization-rule keys renew Service Bus-névtér elsődleges és másodlagos kulcsait. A paraméterrel megadhatja a generált elsődleges és másodlagos kulcsok értékeit --key-value is.

Közös hozzáférésű jogosultságkód-hitelesítés a Service Bus használatával

Az alábbiakban ismertetett forgatókönyv az engedélyezési szabályok konfigurálását, az SAS-jogkivonatok létrehozását és az ügyfél-engedélyezést foglalja magában.

A konfigurációt szemléltető és SAS-hitelesítést használó Service Bus-alkalmazás mintáját lásd: Közös hozzáférésű jogosultságkód-hitelesítés a Service Bus használatával.

Hozzáférés a megosztott hozzáférés engedélyezésére vonatkozó szabályokhoz egy entitáson

A Service Bus felügyeleti kódtárainak üzenetsoraiban vagy témaköreiben található lekérési/frissítési művelettel érheti el/frissítheti a megfelelő közös hozzáférésű hozzáférési engedélyezési szabályokat. Az üzenetsorok vagy témakörök ezen kódtárak használatával történő létrehozásakor is hozzáadhatja a szabályokat.

Közös hozzáférésű jogosultságkódon alapuló hitelesítés használata

A Service Bus SDK bármelyikét használó alkalmazások a hivatalosan támogatott nyelvek (például .NET, Java, JavaScript és Python) bármelyikében használhatják az SAS-engedélyezést az ügyfélkonstruktornak átadott kapcsolati sztring keresztül.

Csatlakozás ion sztringek tartalmazhatnak egy szabálynevet (SharedAccessKeyName) és szabálykulcsot (SharedAccessKey) vagy egy korábban kibocsátott jogkivonatot (SharedAccessSignature). Ha a kapcsolati sztring egy kapcsolati sztring elfogadó konstruktornak vagy gyári metódusnak átadott kapcsolati sztring, a rendszer automatikusan létrehozza és feltölti az SAS-jogkivonat-szolgáltatót.

Az SAS-engedélyezés Service Bus-előfizetésekkel való használatához használhatja a Service Bus-névtérben vagy egy témakörben konfigurált SAS-kulcsokat.

A közös hozzáférésű jogosultságkód használata (HTTP-szinten)

Most, hogy már tudja, hogyan hozhat létre közös hozzáférésű jogosultságkódokat a Service Bus bármely entitásához, készen áll a HTTP POST végrehajtására:

POST https://<yournamespace>.servicebus.windows.net/<yourentity>/messages
Content-Type: application/json
Authorization: SharedAccessSignature sr=https%3A%2F%2F<yournamespace>.servicebus.windows.net%2F<yourentity>&sig=<yoursignature from code above>&se=1438205742&skn=KeyName
ContentType: application/atom+xml;type=entry;charset=utf-8

Ne feledje, ez mindenre jó. SAS-t létrehozhat egy üzenetsorhoz, témakörhöz vagy előfizetéshez.

Ha SAS-jogkivonatot ad egy feladónak vagy ügyfélnek, akkor nem rendelkezik közvetlenül a kulcssal, és nem tudják visszafejteni a kivonatot annak beszerzéséhez. Így ön szabályozhatja, hogy mit férhetnek hozzá, és mennyi ideig. Fontos megjegyezni, hogy ha módosítja a házirend elsődleges kulcsát, az abból létrehozott közös hozzáférésű jogosultságkódok érvénytelenek lesznek.

A közös hozzáférésű jogosultságkód használata (AMQP-szinten)

Az előző szakaszban láthatta, hogyan használhatja az SAS-jogkivonatot egy HTTP POST-kéréssel, amely adatokat küld a Service Busnak. Mint tudja, a Service Bus az Advanced Message Queuing Protocol (AMQP) használatával érhető el, amely a teljesítmény szempontjából előnyben részesített protokoll, számos esetben. Az AMQP sas-jogkivonat-használatát az AMQP jogcímalapú biztonsági verzió 1.0 című dokumentum ismerteti, amely 2013 óta működik, de az Azure ma támogatja.

Mielőtt elkezdene adatokat küldeni a Service Busnak, a közzétevőnek el kell küldenie az SAS-jogkivonatot egy AMQP-üzenetben egy jól definiált, $cbs nevű AMQP-csomópontra (ez a szolgáltatás által az összes SAS-jogkivonat beszerzéséhez és érvényesítéséhez használt "speciális" üzenetsorként tekinthető meg). A közzétevőnek meg kell adnia a Válasz mezőt az AMQP-üzenetben; ez az a csomópont, amelyben a szolgáltatás a jogkivonat érvényesítésének eredményével válaszol a közzétevőnek (a közzétevő és a szolgáltatás közötti egyszerű kérés-válaszminta). Ez a válaszcsomópont "menet közben" jön létre, és az AMQP 1.0 specifikációjának megfelelően "távoli csomópont dinamikus létrehozásáról" beszél. Miután ellenőrizte, hogy az SAS-jogkivonat érvényes-e, a közzétevő továbbléphet, és elkezdhet adatokat küldeni a szolgáltatásnak.

Az alábbi lépések bemutatják, hogyan küldheti el az SAS-jogkivonatot AMQP protokollal a AMQP.NET Lite-kódtár használatával. Ez akkor hasznos, ha nem tudja használni a hivatalos Service Bus SDK-t (például WinRT-en, .NET Compact Frameworken, .NET Micro Frameworken és Mono-n) a C#-ban. Ez a kódtár hasznos annak megértéséhez, hogy a jogcímalapú biztonság hogyan működik az AMQP szintjén, ahogy látta, hogyan működik a HTTP-szinten (egy HTTP POST kéréssel és az "Engedélyezés" fejlécen belül küldött SAS-jogkivonattal). Ha nincs szüksége ilyen mély ismeretekre az AMQP-ről, használhatja a hivatalos Service Bus SDK-t bármely támogatott nyelven, például .NET, Java, JavaScript, Python és Go nyelven, amely ezt teszi ön helyett.

C#

/// <summary>
/// Send claim-based security (CBS) token
/// </summary>
/// <param name="shareAccessSignature">Shared access signature (token) to send</param>
private bool PutCbsToken(Connection connection, string sasToken)
{
    bool result = true;
    Session session = new Session(connection);

    string cbsClientAddress = "cbs-client-reply-to";
    var cbsSender = new SenderLink(session, "cbs-sender", "$cbs");
    var cbsReceiver = new ReceiverLink(session, cbsClientAddress, "$cbs");

    // construct the put-token message
    var request = new Message(sasToken);
    request.Properties = new Properties();
    request.Properties.MessageId = Guid.NewGuid().ToString();
    request.Properties.ReplyTo = cbsClientAddress;
    request.ApplicationProperties = new ApplicationProperties();
    request.ApplicationProperties["operation"] = "put-token";
    request.ApplicationProperties["type"] = "servicebus.windows.net:sastoken";
    request.ApplicationProperties["name"] = Fx.Format("amqp://{0}/{1}", sbNamespace, entity);
    cbsSender.Send(request);

    // receive the response
    var response = cbsReceiver.Receive();
    if (response == null || response.Properties == null || response.ApplicationProperties == null)
    {
        result = false;
    }
    else
    {
        int statusCode = (int)response.ApplicationProperties["status-code"];
        if (statusCode != (int)HttpStatusCode.Accepted && statusCode != (int)HttpStatusCode.OK)
        {
            result = false;
        }
    }

    // the sender/receiver might be kept open for refreshing tokens
    cbsSender.Close();
    cbsReceiver.Close();
    session.Close();

    return result;
}

A PutCbsToken() metódus megkapja a kapcsolatot (AMQP kapcsolatosztálypéldány az AMQP .NET Lite-kódtár által biztosítottak szerint), amely a szolgáltatáshoz való TCP-kapcsolatot és az sasToken paramétert jelöli, amely az elküldendő SAS-jogkivonat.

Feljegyzés

Fontos, hogy a kapcsolat névtelen SASL hitelesítési mechanizmussal jön létre (és ne az alapértelmezett EGYSZERŰ felhasználónévvel és jelszóval, amikor nem kell elküldenie az SAS-jogkivonatot).

Ezután a közzétevő két AMQP-hivatkozást hoz létre az SAS-jogkivonat elküldéséhez és a szolgáltatástól kapott válasz (a jogkivonat-érvényesítési eredmény) fogadásához.

Az AMQP-üzenet számos tulajdonságot és több információt tartalmaz, mint egy egyszerű üzenet. Az SAS-jogkivonat az üzenet törzse (a konstruktor használatával). A "Válasz" tulajdonság a csomópont nevére van beállítva, hogy megkapja az érvényesítési eredményt a fogadó hivatkozáson (tetszés szerint módosíthatja a nevét, és a szolgáltatás dinamikusan hozza létre). A szolgáltatás az utolsó három alkalmazás-/egyéni tulajdonsággal jelzi, hogy milyen műveletet kell végrehajtania. A CBS-tervezet specifikációjának megfelelően a művelet neve ("put-token"), a jogkivonat típusa (ebben az esetben a ) és annak a célközönségnek a neve, servicebus.windows.net:sastokenamelyre a jogkivonat vonatkozik (a teljes entitás).

Miután a közzétevő elküldte az SAS-jogkivonatot a feladó hivatkozására, a közzétevőnek el kell olvasnia a választ a fogadó hivatkozáson. A válasz egy egyszerű AMQP-üzenet egy "status-code" nevű alkalmazástulajdonságtal, amely ugyanazokat az értékeket tartalmazhatja, mint egy HTTP-állapotkód.

A Service Bus-műveletekhez szükséges jogosultságok

Az alábbi táblázat a Service Bus-erőforrások különböző műveleteihez szükséges hozzáférési jogosultságokat mutatja be.

Művelet Igény megadása kötelező Jogcím hatóköre
Névtér
Engedélyezési szabály konfigurálása névtéren Kezelés Bármely névtércím
Szolgáltatásregisztrációs adatbázis
Privát szabályzatok számbavétele Kezelés Bármely névtércím
Névtér figyelésének megkezdése Figyelés Bármely névtércím
Üzenetek küldése névtérbeli figyelőnek Küldés Bármely névtércím
Feldolgozási sor
Üzenetsor létrehozása Kezelés Bármely névtércím
Üzenetsor törlése Kezelés Bármely érvényes üzenetsor-cím
Üzenetsorok számbavétele Kezelés /$Resources/Üzenetsorok
Az üzenetsor leírásának lekérése Kezelés Bármely érvényes üzenetsor-cím
Engedélyezési szabály konfigurálása üzenetsorhoz Kezelés Bármely érvényes üzenetsor-cím
Küldés az üzenetsorba Küldés Bármely érvényes üzenetsor-cím
Üzenetek fogadása üzenetsorból Figyelés Bármely érvényes üzenetsor-cím
Üzenetek elhagyása vagy befejezése az üzenet betekintő zárolási módban való fogadása után Figyelés Bármely érvényes üzenetsor-cím
Üzenet elhalasztása későbbi lekéréshez Figyelés Bármely érvényes üzenetsor-cím
Deadletter egy üzenet Figyelés Bármely érvényes üzenetsor-cím
Üzenetsor-munkamenethez társított állapot lekérése Figyelés Bármely érvényes üzenetsor-cím
Üzenetsor-munkamenethez társított állapot beállítása Figyelés Bármely érvényes üzenetsor-cím
Üzenet ütemezése későbbi kézbesítéshez Figyelés Bármely érvényes üzenetsor-cím
Téma
Üzenettémakör létrehozása Kezelés Bármely névtércím
Témakör törlése Kezelés Bármely érvényes témakörcím
Témakörök számbavétele Kezelés /$Resources/Témakörök
A témakör leírásának lekérése Kezelés Bármely érvényes témakörcím
Engedélyezési szabály konfigurálása egy témakörhöz Kezelés Bármely érvényes témakörcím
Küldés a témakörbe Küldés Bármely érvényes témakörcím
Előfizetés
Előfizetés létrehozása Kezelés Bármely névtércím
Előfizetés törlése Kezelés .. /myTopic/Subscriptions/mySubscription
Előfizetések számbavétele Kezelés .. /myTopic/Subscriptions
Előfizetés leírásának lekérése Kezelés .. /myTopic/Subscriptions/mySubscription
Üzenetek elhagyása vagy befejezése az üzenet betekintő zárolási módban való fogadása után Figyelés .. /myTopic/Subscriptions/mySubscription
Üzenet elhalasztása későbbi lekéréshez Figyelés .. /myTopic/Subscriptions/mySubscription
Deadletter egy üzenet Figyelés .. /myTopic/Subscriptions/mySubscription
Témakör-munkamenethez társított állapot lekérése Figyelés .. /myTopic/Subscriptions/mySubscription
Témakör-munkamenethez társított állapot beállítása Figyelés .. /myTopic/Subscriptions/mySubscription
Szabályok
Szabály létrehozása Figyelés .. /myTopic/Subscriptions/mySubscription
Szabály törlése Figyelés .. /myTopic/Subscriptions/mySubscription
Szabályok számbavétele Kezelés vagy figyelés .. /myTopic/Subscriptions/mySubscription/Rules

Következő lépések

A Service Bus üzenetkezelésről az alábbi témakörökben találhat további információkat.