Aracılığıyla paylaş


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ıtma sürecini 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ın doğrudan günlükleri için sorgulanmasına 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 sağlayıcısı, microsoft.insights günlüklere erişimi tablo düzeyinde denetlemek için yeni bir işlem kümesi sunar. Bu işlemler adlı tableNametablo 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 izinlerine 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 okumasına izin verebileceğ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, çalışma alanında boole özelliği aracılığıyla günlükleri görüntülemek için kaynaktır. Bu, kullanıcının hedef Azure kaynağının günlüklerini okuma erişimi 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ı için izin yok

Veri ve izinlerin kesin birleşimine bağlı olarak, yanıt sonuç veri içermeyen 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ı eksikse:

  • 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 iznine sahip olmadığı veri kaynaklarıyla normal bir yanıt görürler. Kullanıcının Bir 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, WS1 çalışma alanına veri gönderirken, VM2 iki çalışma alanına veri 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 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 belirtmek 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.