ABAC
Was ist ABAC
Zugriffsberechtigungen für Ressourcen basierend auf verschiedenen Attributen.
Beispielsweise Zugriff auf bestimmte Pfade innerhalb eines Storage Containers
Storage Account
Read/Write auf Storage Account Container Pfad
Um einem User / Service Principal Zugriff auf nur einen bestimmten Pfad innerhalb eines Storage account Containers zu geben, kann man folgende Beispiel Condition verwenden.
Als Rolle verwendet man “Storage Blob Data Contributor”
Mit dieser Condition bekommt der Principal Lese- und Schreibzugriff im Container “releases” unterhalb des Pfads “path1/”
Er wird weiterhin die Namen aller Blobs sehen, aber Eigenschaften und Inhalt nur unterhalb des Pfades.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'releases'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'path1/*'
)
)
Minimalberechtigungen für Storage Upload aus Pipeline mit Managed Identity
Um aus einer Build oder Releasepipeline mithilfe von AZ Copy Dateien in einen Storage Account hochladen zu können, benötigt diese Identity mindestens die folgenden Berechtigungen:
- Reader auf dem Storage Account bzw. der Ressource Gruppe
- Storage Blob Data Contributor auf dem Storage Account, alternativ mit ABAC einschränkbar
- Storage Account Key Operator Service Role auf Storage Account