Managed Identities and Shared Access Tokens for EventHubs in Azure
Azure EventHubs can be secured via IAM Role Permissions and Resource Access Policies. They each have their own advantages and disadvantages as discussed in a previous blog posting. We can see how the various Authorization techniques come together in the Azure Portal.
GitHub Repository
  The Azure portal images in this blog were generated using the 8/2021
    version of this Github repository:
    Azure EventHubs Example
Example Security Posture
  Our sample uses different authorization bindings to suit different client
    types. It applies those bindings at different places in the resource
    hierarchy.
  Individual EventHubs and Namespacesuse
    Identity Access Management with a Managed Identity and 
    Standard Azure Roles for some use cases.  They use
    Shared Access Policies and signed requests for other use
    cases.
  Permissions are applied at the Namespace and individual
    EventHub levels.  Namespace permissions are in
    herited by the individual EventHubs.  EventHub permission only applies
    to individual topics.
Video Walkthrough
  In the Portal
  We can see our deployed components and permissions in the
    Azure Portal
Resource Group
  The Resource Group is the root of all Azure resources in this
    example. We can see our EventHubs Namespace and a
    Managed Identity in the resource group.
Managed Identity
  The Managed Identity pane shows all the role assignments for this
    identity.  It shows the identity-centric view.  Our
    identity has two Standard Azure resource-bound role
    assignments.  The identity has Listen and
    Submit permissions on the namespace.
Resource Group
  We go back to the resource group pane to find the
    EventHubs namespace that we created.
EventHubs namespace
  Clicking on the namespace takes us to the namespace management pane
    which has several views available via the left-hand menu.  The sample
    code implements two different types of permissions to the
    namespace.  
- An Identity that is role bound to the namespace with Send and Listen privileges
- A SAS token that is bound to the namespace via a Shared Access Policy with Manage privileges.
EventHubs namespace - IAM
  The namespace portal has its own IAM pane.  That pane is essentially
    the inverse of the Identity view shown above.  It presents the
    Identities and their roles that
    are bound to this namespace.  The pane shows that our managed
    identity has two role assignments bound to this namespace.
EventHubs namespace - Shared Access Policies
  The namespace has a Shared Access Policy that grants
    Manage permissions to any caller that signs requests with the
    SAS Policy secret.  This is a powerful secret that must be
    secured.
EventHubs in the namespace
  There is an EventHub menu item on the left-hand side that you
    can't see.  It brings up the list of EventHubs in this namespace. 
    The right-hand pane shows three hubs each with 4-day retention and 15
    partitions.  The partition count is essentially the level of
    parallelism possible with those EventHubs
Individual EventHub - IAM
  Thie right-hand pane shows inherited and directly assigned IAM
    bindings.   It shows all of the identities that have permission to
    do work with this individual EventHub.  Those permissions could be
    directly bound to the individual EventHub or inherited via the
    namespace.
  Our managed identity that is bound to the namespace shows up
    here.  The permissions in the picture are inherited from the
    namespace.  We saw them in one of the namespace views
    above.
Individual EventHub - Shared Access Policy.
  This EventHub has a shared access policy that lets the SAS
    presenter send messages to the EventHub.  This lets an entity, that is
    not hosted in Azure, send messages to this EventHub.  It just needs to
    sign the request.  The sender could be a 3rd party or a mobile
    app.
  Deploy the demo code and explore for yourself.
  Created 2021 08









 
Comments
Post a Comment