소프트웨어 보안은 보안 소프트웨어가 아닙니다. 여기서는 인증, 액세스 제어, 기밀성, 암호화, 권한 관리 등의 항목에 대해 설명합니다.
- name: storage with network acl
azure_rm_storageaccount:
resource_group: testGroup
name: sa001
type: Standard_RAGRS
network_acls:
bypass: AzureServices,Metrics
default_action: Deny
ip_rules:
- value: 0.0.0.0/0
action: Allow
- name: Create MySQL Server
azure.azcollection.azure_rm_mysqlserver:
resource_group: testGroup
name: testMySQL
sku:
name: B_Gen5_1
tier: Basic
location: westeurope
storage_mb: 8096
version: 5.6
enforce_ssl: false
admin_username: test
admin_password: complicatedPass
- name: Create Postgres Server
azure.azcollection.azure_rm_postgresqlserver:
resource_group: testGroup
name: testPostgres
sku:
name: B_Gen5_1
tier: Basic
location: westeurope
storage_mb: 8096
version: 5.6
enforce_ssl: false
admin_username: test
admin_password: complicatedPass
https_only
설정이yes
로 설정되어 Azure 스토리지 계정에 대해 보안 전송을 적용합니다. 이 설정은 명시적으로 비활성화할 수 있습니다.
- name: create a storage account
azure_rm_storageaccount:
resource_group: testResGroup
name: sa0001
type: Standard_GRS
https_only: no
- name: AKS Instance
azure_rm_aks:
name:
resource_group: testResourceGroup
location: eastus
...
addon:
monitoring:
log_analytics_workspace_resource_id: logws001
enabled: no
securestring
또는 secureobject
유형을 사용합니다.
{
...
"parameters": {
"rootPassword": {
"defaultValue": "HardcodedPassword",
"type": "secureString"
},
"adminLogin": {
"type": "string"
},
"sqlServerName": {
"type": "string"
}
},
...
}
"supportsHttpsTrafficOnly": "false"
{
"name": "TestCluster",
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2020-02-01",
"location": "[resourceGroup().location]",
"properties": {
...
"servicePrincipalProfile": {
"clientId": "422313d8-123a-41ea-8f8e-90821ff61c05",
"secret": "xxxxxxxxxxxxxxxxx"
},
}
}
{
...
"type": "Microsoft.Web/sites/config",
"properties":
{
...
"remoteDebuggingEnabled": true,
}
}
publicAccess
속성을 Container
로 설정하여 Azure Blob Storage 컨테이너를 정의합니다. 이렇게 하면 컨테이너의 모든 blob 및 데이터에 익명으로 액세스할 수 있습니다.
{
"type": "Microsoft.Storage/storageAccounts/blobServices/containers",
"apiVersion": "2021-04-01",
"name": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('containerName'))]",
"properties":{
"publicAccess": "Container"
}
,
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
]
}
publicNetworkAccess
속성을 활성화하고 IP 제한을 적용하지 않음으로써 네트워크 액세스가 제한되지 않은 Azure Container Registry를 정의합니다.예제 2: 다음 예제 템플릿은
{
"name": "[variables('acrName')]",
"type": "Microsoft.ContainerRegistry/registries",
...
"properties": {
"publicNetworkAccess": "Enabled",
..
}
networkRuleSet
속성에 대한 광범위한 허용 목록을 지정하여 네트워크 액세스가 제한되지 않은 Azure Container Registry를 정의합니다.
{
"name": "[variables('acrName')]",
"type": "Microsoft.ContainerRegistry/registries",
...
"properties": {
"publicNetworkAccess": "Enabled",
"networkRuleSet":
{
"defaultAction": "Allow",
"ipRules":[{
"action": "Allow",
"value": "*"
}]
}
...
}
예제 2: 다음 예제 템플릿은 Azure 웹 응용 프로그램에 대해 지나치게 허용적인 CORS 정책을 정의합니다.
{
...
"type": "Microsoft.SignalRService/SignalR",
...
"properties": {
...
"cors": {
"allowedOrigins": ["*"]
},
...
}
예제 3: 다음 예제 템플릿은 Azure Maps 계정에 대해 지나치게 허용적인 CORS 정책을 정의합니다.
{
"apiVersion": "2020-12-01",
"type": "Microsoft.Web/sites",
...
"properties": {
...
"siteConfig": {
...
"cors": {
"allowedOrigins": [
"*"
]
},
...
}
예제 4: 다음 예제 템플릿은 Azure Cosmos DB 계정에 대해 지나치게 허용적인 CORS 정책을 정의합니다.
{
"apiVersion": "2021-12-01-preview",
"type": "Microsoft.Maps/accounts",
...
"properties":{
"cors":{
"allowedOrigins": ["*"]
}
},
...
}
예제 5: 다음 예제 템플릿은 Azure Storage Blob 서비스에 대해 지나치게 허용적인 CORS 정책을 정의합니다.
{
"type": "Microsoft.DocumentDB/databaseAccounts",
...
"properties": {
"cors": [{
"allowedOrigins":"*"
}],
...
}
{
"type": "Microsoft.Storage/storageAccounts/blobServices",
...
"properties": {
"cors": {
"corsRules": [
{
"allowedOrigins":["*"],
...
}
]
}
}
...
}
publicNetworkAccess
속성은 Enabled
로 설정되고 IP 주소 범위에 모든 IP가 포함됩니다.
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"apiVersion": "2021-04-15",
...
"properties": {
...
"publicNetworkAccess": "Enabled",
"ipRules":[{
"ipAddressOrRange": "0.0.0.0"
}]
...
}
{
...
"name": "sample/securitygroup",
"type": "Microsoft.Network/networkSecurityGroups/securityRules",
"apiVersion": "2020-11-01",
"properties": {
"description": "Services Inbound Range",
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRanges": [
"3333-3389"
],
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 100,
"direction": "Inbound"
...
}
{
"resources": [
{
"name": "[variables('sqlServerName')]",
"type": "Microsoft.Sql/servers",
...
"resources": [
{
"type": "databases",
...
},
{
"name": "AllowAllIPs",
"type": "firewallrules",
"apiVersion": "2020-02-02-preview",
"location": "[parameters('location')]",
"properties": {
"endIpAddress": "255.255.255.255",
"startIpAddress": "0.0.0.0"
},
}
]
}
]
}
apiVersion
2019-04-01 이상에서 Azure 스토리지 계정은 요청에 응답할 때 보안 연결을 요구하지만 이 요구 사항은 supportsHttpsTrafficOnly
속성을 사용하여 비활성화될 수 있습니다.
{
"name": "Storage1",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-02-01",
...
"properties": {
"supportsHttpsTrafficOnly": false
}
}