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ı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ı 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 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.