azStorage

Use the resource azStorage to deploy an Azure Storage account.

Attributes

Attribute Type Mandatory Values Default Notes
Name String
ResourceGroupName String
Location String
Kind String Storage
StorageV2 (D)
BlobStorage
BlockBlobStorage
FileStorage
Sku String Standard_LRS
Standard_ZRS
Standard_GRS
Standard_RAGRS
Premium_LRS
Premium_ZRS
EnableAzureActiveDirectory Boolean No False
Network Object No
Security Object No
Diagnostic Object No
Tag Object No
Lock Object No
Blob Object No
FileShare Object No

Network

Attribute Type Mandatory Values Default Notes
PublicNetworkAccess String No Enabled, Selected, Disabled Selected
VNet Object No
Firewall Object No
Resources Object No
Exceptions Object No
RoutingPreference String No MicrosoftRouting (D)
InternetRouting
PrivateEndpoint Object No

Network VNet

Attribute Type Mandatory Values Default Notes
SubnetName String Yes
VNetName String Yes
ResourceGroupName String Yes

Network Firewall

Attribute Type Mandatory Values Default Notes
IPAddressOrRange Array No

Network Resources

Attribute Type Mandatory Values Default Notes
Type String Yes
Scope String Yes

Network Exceptions

Attribute Type Mandatory Values Default Notes
AllowAzureServices Boolean No True
AllowReadAccessLogging Boolean No False
AllowReadAccessMetrics Boolean No False

Security

Attribute Type Mandatory Values Default Notes
EnableHttpsTrafficOnly Boolean False
AllowSharedKeyAccess Boolean True
MinimumTlsVersion String No TLS1_0, TLS1_1, TLS1_2 (D) TLS1_2
InfrastructureEncryption Boolean No False

Diagnostic

Attribute Type Mandatory Values Default Notes
Name String Yes
Metric Object No
Target Object No

Diagnostic Metric

Attribute Type Mandatory Values Default Notes
Enabled Boolean Yes * True, False * * Defaults to true if Category is not null
Category Array Transaction

Blob

Attribute Type Mandatory Values Default Notes
AccessTier String
EnableNfsV3 Boolean False
AllowPublicAccess Boolean No True
AllowCrossTenantReplication Boolean No True
EnableHierarchicalNamespace Boolean No False
EnableContainerSoftDelete Boolean No False Number of days
ContainerSoftDeleteRetention Number No
EnableBlobSoftDelete Boolean No False
BlobSoftDeleteRetention Number No Number of days
EnableVersioning Boolean No False
EnableChangeFeed Boolean No False
Container Object No
Diagnostic Object No

Blob Container

Attribute Type Mandatory Values Default Notes
Name String Yes
PublicAccess String Yes None, List, Read Equals MS Off/Private, Blob, Container

Blob Diagnostic

Attribute Type Mandatory Values Default Notes
Name String
Log Object
Metric Object
Target Object

Blob Diagnostic Log

Attribute Type Mandatory Values Default Notes
Enabled Boolean Defaults to true if Category is not null
Category Array StorageRead
StorageWrite
StorageDelete

Blob Diagnostic Metric

Attribute Type Mandatory Values Default Notes
Enabled Boolean True, False * * Defaults to true if Category is not null
Category Array Transaction

File Share

Attribute Type Mandatory Values Default Notes
EnableLargeFileShare Boolean No False

Input by YAML

Object model for YAML deployment:

---
azStorage:
    # Mandatory
  - Name: 'string'
    ResourceGroupName: 'string'
    Location: 'string'
    # Optional
    Kind: 'string'                                # Storage, StorageV2 (D), BlobStorage, BlockBlobStorage, FileStorage
    Sku: 'string'                                 # Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS
    EnableAzureActiveDirectory: boolean           # False (D), True

    Network:
      PublicNetworkAccess: 'string'               # Enabled, Selected (D), Disabled
      VNet:
        - SubnetName: 'string'
          VNetName: 'string'
          ResourceGroupName: 'string'                                
      Firewall:
        IPAddressOrRange: [array]   
      Resources:
        - Type: 'string'
          Scope: 'string'
      Exceptions:
        AllowAzureServices: boolean               # True (D), False
        AllowReadAccessLogging: boolean           # True, False (D)
        AllowReadAccessMetrics: boolean           # True, False (D)
      RoutingPreference: 'string'                 # MicrosoftRouting (D), InternetRouting

      PrivateEndPoint:
        - Name: 'string'
          Location: 'string'
          PrivateLinkName: 'string'               # Defaults to pl-resource
          NetworkInterfaceName: 'string'          # Defaults to nic-resource
          ResourceGroupName: 'string'             # Defaults to RG of the resource
          VirtualNetwork:
            VNetName: 'string'
            SubnetName: 'string'
            ResourceGroupName: 'string'           # Defaults to RG of the resource
            SubscriptionName: 'string'            # Defaults to Sub of the resource

    Security:
      EnableHttpsTrafficOnly: boolean             # False (D), True
      AllowSharedKeyAccess: boolean               # False, True (D)
      MinimumTlsVersion: 'string'                 # TLS1_0, TLS1_1, TLS1_2 (D)
      InfrastructureEncryption: boolean           # False (D), True

    Diagnostic:
      - Name: 'string'
        Metric:
          Enabled: boolean                        # True (D if MetricCategory not null), False
          Category:                               
            - Transaction                         # defaults to all if enabled
        Target:
          Blob:
            StorageAccount: 'string'
            StorageKeyType: 'string'              # Primary, Secondary
            RetentionInDays: number
            ResourceGroupName: 'string'           # Defaults to RG of resource
            SubscriptionName: 'string'            # Defaults to subscription of resource
          EventHub:
            Name: 'string'
            Namespace: 'string'
            SharedAccessPolicy: 'string'          # RootManageSharedAccessKey (D)
            ResourceGroupName: 'string'           # Defaults to RG of resource
            SubscriptionName: 'string'            # Defaults to subscription of resource
          LogAnalytics:
            Workspace: 'string'
            ResourceGroupName: 'string'           # Defaults to RG of resource
            SubscriptionName: 'string'            # Defaults to subscription of resource

    Tag:
      <keyvalue-pairs>

    Lock:
      - Name: 'string'
        Level: 'string'                           # CanNotDelete, ReadOnly
        Notes: 'string'

    Blob:
      EnableHierarchicalNamespace: boolean        # False (D), True
      AllowPublicAccess: boolean                  # False, True (D)
      AccessTier: 'string'                        # Hot (D), Cool
      EnableContainerSoftDelete: boolean          # False (D), True
      ContainerSoftDeleteRetention: number        # Number of days
      EnableBlobSoftDelete: boolean               # False (D), True
      BlobSoftDeleteRetention: number             # Number of days
      EnableVersioning: boolean                   # False (D), True  (Only for standard accounts)
      EnableChangeFeed: boolean                   # False (D), True  (Only for standard accounts)
      ImmutabilityPeriod: number                  # > 0 will enable account Immutability
      ImmutabilityPolicyState: 'string'           # Unlocked, Disabled
      EnableNfsV3: boolean                        # False (D), True
      AllowCrossTenantReplication: boolean        # False, True (D)

      Diagnostic:
        - Name: 'string'
          Log:
            Enabled: boolean                      # True (D if Category not null), False
            Category:                             # defaults to all if enabled
              - StorageRead               
              - StorageWrite
              - StorageDelete
          Metric:
            Enabled: boolean                      # True (D if MetricCategory not null), False
            Category:                             # defaults to all if enabled
              - Transaction
          Target:
            Blob:
              StorageAccount: 'string'
              StorageKeyType: 'string'            # Primary, Secondary
              RetentionInDays: number
              ResourceGroupName: 'string'         # Defaults to RG of resource
              SubscriptionName: 'string'          # Defaults to subscription of resource
            EventHub:
              Name: 'string'
              Namespace: 'string'
              SharedAccessPolicy: 'string'        # RootManageSharedAccessKey (D)
              ResourceGroupName: 'string'         # Defaults to RG of resource
              SubscriptionName: 'string'          # Defaults to subscription of resource
            LogAnalytics:
              Workspace: 'string'
              ResourceGroupName: 'string'         # Defaults to RG of resource
              SubscriptionName: 'string'          # Defaults to subscription of resource

      Container:
        - Name: 'string'
          PublicAccess: 'string'                  # None, List, Read (Equals MS Off/Private, Blob, Container)

Input by JSON

Object model for JSON deployment:

{
  "azStorage": [
    {
      "Name": "string",
      "ResourceGroupName": "string",
      "Location": "string",
      "Kind": "string",
      "Sku": "string",
      "EnableAzureActiveDirectory": boolean,
      "Network": {
        "PublicNetworkAccess": "string",
        "VNet": [
          {
            "SubnetName": "string",
            "VNetName": "string",
            "ResourceGroupName": "string"
          }
        ],
        "Firewall": {
          "IPAddressOrRange": [
            "array"
          ]
        },
        "Resources": [
          {
            "Type": "string",
            "Scope": "string"
          }
        ],
        "Exceptions": {
          "AllowAzureServices": boolean,
          "AllowReadAccessLogging": boolean,
          "AllowReadAccessMetrics": boolean
        },
        "RoutingPreference": "string",
        "PrivateEndPoint": [
          {
            "Name": "string",
            "Location": "string",
            "PrivateLinkName": "string",
            "NetworkInterfaceName": "string",
            "ResourceGroupName": "string",
            "VirtualNetwork": {
              "VNetName": "string",
              "SubnetName": "string",
              "ResourceGroupName": "string",
              "SubscriptionName": "string"
            }
          }
        ]
      },
      "Security": {
        "EnableHttpsTrafficOnly": boolean,
        "AllowSharedKeyAccess": boolean,
        "MinimumTlsVersion": "string",
        "InfrastructureEncryption": boolean
      },
      "Diagnostic": [
        {
          "Name": "string",
          "Metric": {
            "Enabled": boolean,
            "Category": [array]
          },
          "Target": {
            "Blob": {
              "StorageAccount": "string",
              "StorageKeyType": "string",
              "RetentionInDays": number,
              "ResourceGroupName": "string",
              "SubscriptionName": "string"
            },
            "EventHub": {
              "Name": "string",
              "Namespace": "string",
              "SharedAccessPolicy": "string",
              "ResourceGroupName": "string",
              "SubscriptionName": "string"
            },
            "LogAnalytics": {
              "Workspace": "string",
              "ResourceGroupName": "string",
              "SubscriptionName": "string"
            }
          }
        }
      ],
      "Tag": {
        "key": "value",
      "Lock": [
        {
          "Name": "string",
          "Level": "string",
          "Notes": "string"
        }
      ],
      "Blob": {
        "EnableHierarchicalNamespace": boolean,
        "AllowPublicAccess": boolean,
        "AccessTier": "string",
        "EnableContainerSoftDelete": boolean,
        "ContainerSoftDeleteRetention": number,
        "EnableBlobSoftDelete": boolean,
        "BlobSoftDeleteRetention": number,
        "EnableVersioning": boolean,
        "EnableChangeFeed": boolean,
        "ImmutabilityPeriod": number,
        "ImmutabilityPolicyState": "string",
        "EnableNfsV3": boolean,
        "AllowCrossTenantReplication": boolean,
        "Diagnostic": [
          {
            "Name": "string",
            "Log": {
              "Enabled": boolean,
              "Category": [array]
            },
            "Metric": {
              "Enabled": boolean,
              "Category": [array]
            },
            "Target": {
              "Blob": {
                "StorageAccount": "string",
                "StorageKeyType": "string",
                "RetentionInDays": number,
                "ResourceGroupName": "string",
                "SubscriptionName": "string"
              },
              "EventHub": {
                "Name": "string",
                "Namespace": "string",
                "SharedAccessPolicy": "string",
                "ResourceGroupName": "string",
                "SubscriptionName": "string"
              },
              "LogAnalytics": {
                "Workspace": "string",
                "ResourceGroupName": "string",
                "SubscriptionName": "string"
              }
            }
          }
        ],
        "Container": [
          {
            "Name": "string",
            "PublicAccess": "string"
          }
        ]
      }
    }
  ]
}