Skip to main content

Azure roles, users, and assignments

Project description

llamazure.rbac : Azure roles, users, and assignments

The llamazure.rbac package provides a helpful interface to Azure RBAC.

Benefits:

  • a coherent view of roles and assignments
  • automatically handles internals of the Azure RBAC model. For example, deleting a role will first delete all role assignments
  • automatic retries and waits for the cloud to work

rbac

Usage

For roles definitions and role assignments, create RoleOps with an AzRest created by its from_credential method:

from azure.identity import DefaultAzureCredential

from llamazure.azrest.azrest import AzRest
from llamazure.rbac.roles import RoleOps

role_ops = RoleOps(AzRest.from_credential(DefaultAzureCredential()))

For users and groups, create a Users or a Groups with a MSGraph created by their from_credentials method:

from azure.identity import DefaultAzureCredential

from llamazure.msgraph.msgraph import Graph
from llamazure.rbac.resources import Groups, Users

users = Users(Graph.from_credential(DefaultAzureCredential()))
groups = Groups(Graph.from_credential(DefaultAzureCredential()))

Create a role

from llamazure.rbac.roles import *

role = role_ops.rds.put(
    RoleDefinition.Properties(
        roleName="llamazure-rbac-asn",
        description="test finding assignments",
        permissions=[Permission(actions=["Microsoft.Authorization/*/read"])],
    ),
    scope="/subscriptions/00000000-0000-0000-0000-000000000000",
)

Assign a role

This will also automatically add the scope of assignment to the role's assignable scopes if necessary:

me = users.current()
role_ops.ras.assign(principalId=me["id"], principalType="User", role_name=role.properties.name,scope="/subscriptions/00000000-0000-0000-0000-000000000000")

Delete a role

This will also delete all role assignments before deleting a role:

role_ops.delete_role(role)

You can also delete a role by name:

role_ops.delete_by_name("llamazure-rbac-asn")

Get users with their groups

users.list_with_memberOf()

Get groups with their members

groups.list_with_memberships()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llamazure_rbac-0.2.1.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llamazure_rbac-0.2.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file llamazure_rbac-0.2.1.tar.gz.

File metadata

  • Download URL: llamazure_rbac-0.2.1.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for llamazure_rbac-0.2.1.tar.gz
Algorithm Hash digest
SHA256 80b641d565d98b70f6c949edc3a8df18e0f85fed9ec5aae0951a8a11d242b8e6
MD5 1fed7c6c4ef3bbae3ef775b378d2dd40
BLAKE2b-256 1f74bffab0234af1f65c82f0f3c85a4e6efab4f864d48859344569dadae75d37

See more details on using hashes here.

File details

Details for the file llamazure_rbac-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: llamazure_rbac-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for llamazure_rbac-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4382d0fd98b7c274acfca1c39a49de04a56df4cca4b29aaa90556320582ea519
MD5 8fa5832fff99211fc5dc640555b366a7
BLAKE2b-256 048be6a73e783e16be137ecb6798062be23f152619805d8bb2ac0e49111c2218

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page