Azure kaynakları için günlükleri sorgulama
Azure İzleyici Log Analytics'te sorgular genellikle çalışma alanı bağlamında yürütülür. Çalışma alanı birçok kaynak için veri içerebilir ve bu da belirli bir kaynağın verilerini yalıtmayı zorlaştırır. Kaynaklar ayrıca birden çok çalışma alanına veri gönderebilir. Bu deneyimi basitleştirmek için REST API, Azure kaynaklarını doğrudan günlükleri için sorgulamaya izin verir.
Yanıt biçimi
Azure kaynak sorguları, Log Analytics çalışma alanını hedefleyen sorgularla aynı yanıt şeklini oluşturur.
URL biçimi
Tam tanımlayıcısı olan bir Azure kaynağını göz önünde bulundurun:
/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>
Bu kaynağın doğrudan API uç noktasına yönelik günlükleri için bir sorgu aşağıdaki URL'ye gider:
https://api.loganalytics.azure.com/v1/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/query
ARM aracılığıyla aynı kaynağa yapılan bir sorgu aşağıdaki URL'yi kullanır:
https://management.azure.com/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/providers/microsoft.insights/logs?api-version=2018-03-01-preview
Temelde, bu URL tam Azure kaynağı ve uzantı sağlayıcısıdır: /providers/microsoft.insights/logs
.
Tablo erişimi ve RBAC
Kaynak microsoft.insights
sağlayıcısı, günlüklere erişimi tablo düzeyinde denetlemek için yeni bir işlem kümesi sunar. Bu işlemler adlı tableName
tablo için aşağıdaki biçime sahiptir.
microsoft.insights/logs/<tableName>/read
Bu izin, belirtilen tabloların ve 'notActions' özelliğinin belirtilen tablolara izin vermemesi için 'actions' özelliği kullanılarak rollere eklenebilir.
Çalışma alanına erişim denetimi
Günümüzde Azure kaynak sorguları Log Analytics çalışma alanlarını olası veri kaynakları olarak incelemektedir. Ancak, yöneticiler RBAC rolleri aracılığıyla çalışma alanına erişimi kilitlemiş olabilir. Varsayılan olarak, API yalnızca kullanıcının erişim iznine sahip olduğu çalışma alanlarından sonuçlar döndürür.
Çalışma alanı yöneticileri mevcut RBAC'yi bozmadan Azure kaynak sorgularını kullanmak isteyebilir ve kullanıcının bir Azure kaynağının günlüklerini okuma erişimine sahip olabileceği ancak bu günlükleri içeren çalışma alanını sorgulama iznine sahip olmadığı bir senaryo oluşturabilir. Çalışma alanı yöneticileri kaynağı, çalışma alanında boole özelliği aracılığıyla günlükleri görüntülemek için kullanılır. Bu, kullanıcı hedef Azure kaynağının günlüklerini okuma erişimine sahip olduğu sürece kullanıcıların belirli bir çalışma alanında hedef Azure kaynağıyla ilgili günlüklere erişmesine olanak tanır.
Bu, çalışma alanı düzeyinde Tablolara erişimin kapsamını belirleme eylemidir:
microsoft.operationalinsights/workspaces/query/<tableName>/read
Hata yanıtları
Aşağıda, Belirtik davranışın açıklamasıyla birlikte Azure kaynaklarını sorgularken karşılaşılan yaygın hata senaryolarının kısa bir listesi yer almaktadır.
Azure kaynağı yok
HTTP/1.1 404 Not Found
{
"error": {
"message": "The resource /subscriptions/7fd50ca7-1e78-4144-ab9c-0ec2faafa046/resourcegroups/test-rg/providers/microsoft.storage/storageaccounts/exampleResource was not found",
"code": "ResourceNotFoundError"
}
}
Kaynağa erişim yok
HTTP/1.1 403 Forbidden
{
"error": {
"message": "The provided credentials have insufficient access to perform the requested operation",
"code": "InsufficientAccessError",
"innererror": {
"code": "AuthorizationFailedError",
"message": "User '92eba38a-70da-42b0-ab83-ffe82cce658f' does not have access to read logs for this resource"
}
}
Kaynaktan günlük yok veya bu günlükleri içeren çalışma alanına izin yok
Verilerin ve izinlerin tam birleşimine bağlı olarak, yanıt sonuç verisi olmayan bir 200 içerir veya söz dizimi hatası (4xx hatası) oluşturur.
Kısmi erişim
Kullanıcının belirli bir kaynağın günlüklerine erişmek için kısmi izinlere sahip olabileceği bazı senaryolar vardır. Bir kullanıcı eksik olduğunda:
- Azure kaynağının günlüklerini içeren çalışma alanına erişim
- Sorgudaki tablo başvurusuna erişim
Kullanıcının sessizce filtrelenmiş erişim izinleri olmayan veri kaynaklarıyla normal bir yanıt görürler. Kullanıcının Azure kaynağına, temel log analytics çalışma alanlarına ve belirli tablolara erişimi hakkındaki bilgileri görmek için üst bilgiyi Prefer: include-permissions=true
isteklerle birlikte ekleyin. Bu, yanıt JSON'unun aşağıdakine benzer bir bölüm içermesine neden olur:
{
"permissions": {
"resources": [
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.Compute/virtualMachines/VM1",
"dataSources": [
"/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS1"
]
},
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.Compute/virtualMachines/VM2",
"denyTables": [
"SecurityEvent",
"SecurityBaseline"
],
"dataSources": [
"/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS2",
"/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS3"
]
}
],
"dataSources": [
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS1",
"denyTables": [
"Tables.Custom"
]
},
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS2"
}
]
}
}
Yük, resources
iki VM'yi sorgulama girişimini açıklar. VM1 verileri WS1 çalışma alanına, VM2 ise iki çalışma alanına gönderir: WS2 ve WS3. Ayrıca, kullanıcının kaynak için veya SecurityBaseline
tablolarını sorgulama SecurityEvent
izni yoktur.
Yük, dataSources
kullanıcının hangi çalışma alanlarını sorgulayabileceğinizi açıklayarak sonuçları daha fazla filtreler. Burada kullanıcının WS3'i sorgulama izinleri ve WS1 dışında filtrelenmiş ek bir tablo yoktur.
Böyle bir sorguda hangi verilerin döndürüleceğini net bir şekilde ifade etmek için:
- Çalışma alanından Tables.Custom hariç WS1'de VM1 için günlükler.
- WS2'de SecurityEvent ve SecurityBaseline hariç VM2 günlükleri.