Как я могу удалить Контейнер аренды с журналом аудита в Azure? - PullRequest
0 голосов
/ 08 января 2019

В этом вопросе есть несколько вопросов по Stackoverflow, но все они возникают при аренде виртуальной машины и ее дисков. Тогда нужно сначала удалить диск, чтобы иметь возможность удалить учетную запись / контейнер хранения.

Пример: Как удалить учетную запись хранения Azure, содержащую выделенный большой двоичный объект?

Моя проблема в том, что у меня есть специальный журнал аудита, в котором мы использовали арендованный контейнер (мы не хотим, чтобы кто-либо манипулировал журналами.). Но мы переместили эти журналы в другое место, поэтому теперь я хочу удалить старый ресурс. Но не в состоянии из-за аренды блокировки.

Скорее всего, это из-за того, что я не понимаю, как работает аренда. Моей первой попыткой было разорвать аренду и разблокировать .. Это было сделано:

enter image description here

Я предполагал, что теперь я могу удалить ресурс, но все равно получаю ошибку:

"Не удалось удалить 1 из 1 контейнера (ов): Auditlog-container: ContainerProtectedFromDeletion: Контейнер хранения stgutauditlog Контейнер Audlog-контейнера защищен от удаления из-за ImmutabilityPolicy. "

Итак, глядя на эту ImmutablePolicy, я попробовал Контейнеры BLOB-объектов - удалить политику неизменности , но получил сообщение об ошибке:

{
  "error": {
    "code": "ContainerImmutabilityPolicyFailure",
    "message": "Operation not allowed on immutability policy with incorrect etag."
  }
}

Глядя на eTag, вы должны увидеть версию eTag (только связанный с eTag параметр) в заголовке If-Match. Но я попытался добавить eTag, попробовал * и другие, но все еще то же сообщение.

Попытка Контейнеры BLOB-объектов - Получить политику неизменности Команда, чтобы попытаться получить eTag. Я получаю только eTag, уже предоставленный и такие

{
  "id": "/subscriptions/<removed>/resourceGroups/<removed>/providers/Microsoft.Storage/storageAccounts/<removed>/blobServices/default/containers/auditlog-container/immutabilityPolicies/default",
  "name": "default",
  "type": "Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies",
  "etag": "\"<removed>\"",
  "properties": {
    "immutabilityPeriodSinceCreationInDays": 8,
    "state": "Locked"
  }
}

(Удалена некоторая информация для безопасности, помеченная как удаленная в приведенном выше коде)

Здесь написано, что заблокировано ... Но как мне снять эту блокировку ??

Также удаление файлов в нем невозможно, параметры выделены серым цветом:

enter image description here

Я не знаю, какой шаг сделать дальше или что я пропустил. Как удалить эту учетную запись / контейнер?

Любая помощь оценена!

Ответы [ 2 ]

0 голосов
/ 08 января 2019

@ Swippen, я попытался воспроизвести сценарий и получил следующие ошибки при попытке удалить контейнер с помощью powershell и проводника хранения, где неизменяемая политика находится в заблокированном состоянии. Policy1 политика Но когда я попытался использовать портал, чтобы удалить тот же контейнер. Он был успешно удален и работал для меня, не могли бы вы однажды удалить контейнер, используя портал. policy3

Примечание: - Удаление заблокированной политики неизменности не допускается, единственный способ - удалить контейнер после удаления всех больших двоичных объектов внутри контейнера.

0 голосов
/ 08 января 2019

Я бы предложил вам попробовать приведенный ниже скрипт Power Shell, чтобы удалить конкретный контейнер, если статус аренды доступен. Посмотрите, поможет ли это вам.

Login-AzureRmAccount
Set-AzureRmContext -SubscriptionID "yoursubscription id"
$ResourceGroupName = "your resourcegroup name"
$StorageAccountName = "your storage account name"
$StorageContainerNames = "container1, container2"

try{

## Get Storage Details
Write-Output ("Get Storage Account $StorageAccountName Keys")
$Keys = Get-AzureRmStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName;

Write-Output ("Get Storage Account $StorageAccountName Context")
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $Keys[0].Value;

## Proccess Each Container
$StorageContainerNames.Split(",") | ForEach {       

    $currentContainer = $_

    Write-Output ("Start Remove for Container $currentContainer")

    ## Remove Container
    if ((Get-AzureStorageContainer -Context $StorageContext | Where-Object { $_.Name -eq $currentContainer })){           

        ## Remove a Blob Container in the Storage Account
        Write-Output ("Removing Container: $currentContainer")
        Remove-AzureStorageContainer -Context $StorageContext -Name $currentContainer -Force;
        Write-Output ("Container $currentContainer Removed")           

    }
    else {

        Write-Warning "Container $currentContainer doesn't exists."

    }
}
}catch {

Write-Error "$_.Exception.Message"

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...