1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AZ-900対策】Azureのガバナンスとコンプライアンスの機能とツールをまとめた

Posted at

はじめに

この記事はMicrosoftの認定試験であるAZ-900:(Microsot Azure Fundamentals)の試験範囲であるAzureストレージについてまとめたものです。基本は、Microsoftが無料で公開している学習ツールであるMicrosoft Learnの記事の内容をまとめていますが、適宜必要な情報を加えています。

Azure Blueprints

Azure Blueprintsとは、Azure環境でのリソースの作成や構成を自動化するためのサービスです。事前に定義されたポリシー、ロール、およびリソーステンプレートを使用して、Azureサブスクリプションで展開されるリソースの構成を定義・展開できます。これにより、セキュリティ、コンプライアンス、および管理要件を確実に満たすことが可能になります。

Azure Blueprintsの用途

  • 環境の標準化
    • テスト環境や開発環境など、デプロイの標準化が可能
    • チーム間での環境の一貫性を維持することが可能
  • セキュリティとコンプライアンスの確保
    • セキリュティやコンプライアンスの規制要件に従った環境を構築可能
    • 設定ミスによるヒューマンエラーのリスクが軽減
  • 効率的な管理
    • 新規サブスクリプションごとのAzure Policyの設定が不要
    • DevOpsプロセスの自動化が可能
  • デプロイの監視
    • Azure Blueprintsはバージョン対応のため、更新ごとに新しいバージョンの割り当てが可能

アーティファクト

アーティファクトとは、Azureリソースを作成するために必要な要素のことを指します。アーティファクトの要素は設定する必要はなく、複数の設定も可能です。例えば、以下の要素が設定可能です。

  • ロールの割り当て
    • リソースへのアクセスを制御するために使用
  • ポリシーの割り当て
    • リソースの構成やセキュリティ要件を規定するために使用
  • ARM(Azure Resource Manager)テンプレート
    • リソースの展開や構成を自動化するために使用
  • リソースグループ
    • リソースを分類するためのリソースグループを定義するために使用

Azure BlueprintsとARMテンプレートの違い

Azure BlueprintsとARMテンプレートは、管理の範囲が異なります。サブスクリプションやリソースグループを管理する場合はAzure Blueprintsを用い、リソースを管理する場合はARMテンプレートを用います。

  • ARMテンプレート

    • Azureのリソースを定義し、展開するための単一のJSONファイル
    • 単一のリソースグループ内で複数のリソースを作成することができ、リソースの依存関係を管理することができる
  • Azure Blueprints

    • 複数のARMテンプレートを組み合わせ、より広範なAzureリソースの自動化と一貫性を提供するためのサービス
    • 複数のAzureサブスクリプション、複数の地域、複数のリソースグループで標準化されたソリューションを導入することができる

AzureポータルでAzure Blueprintsを使用してみる

Azureポータルの検索窓から、ブループリントと検索して表示されたサービスを選択します。
image.png
"空白のブループリントで始める"をクリックします。
image.png
ブループリント名の指定と、定義の場所でサブスクリプションの選択を行います。
image.png

ロールの割り当て

"+生成物の追加..."を選択します。
image.png
生成物の種類では、"ロールの割り当て"を選択し、ロールを"共同作成者"と指定した後、"追加"を押すことで生成物をブループリントに追加します。
image.png

ポリシーの割り当て

"+生成物の追加..."を選択します。
image.png
生成物の種類を"ポリシーの割り当て"とし、種類を"ビルトイン"、検索を"タグ"と入力し、"タグとその値をリソースに追加する"を選択した後、"追加"ボタンを押下します。
image.png

リソースグループの追加

"+生成物の追加..."を選択します。
image.png
生成物の種類で"リソースグループ"を選択し、"追加"ボタンを押下します。
image.png

リソースグループにテンプレートの追加

リソースグループ以下の"+生成物の追加..."を押下します。
image.png
生成物の種類を"Azure Resource Managerテンプレート"とし、生成物の表示名を"StorageAccount"と入力します。テンプレートタブで以下のjsonファイルを添付します。

jsonファイルを表示
{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountType": {
            "type": "string",
            "defaultValue": "Standard_LRS",
            "allowedValues": [
                "Standard_LRS",
                "Standard_GRS",
                "Standard_ZRS",
                "Premium_LRS"
            ],
            "metadata": {
                "description": "Storage Account type"
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "Location for all resources."
            }
        }
    },
    "variables": {
        "storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]"
    },
    "resources": [{
        "type": "Microsoft.Storage/storageAccounts",
        "name": "[variables('storageAccountName')]",
        "location": "[parameters('location')]",
        "apiVersion": "2018-07-01",
        "sku": {
            "name": "[parameters('storageAccountType')]"
        },
        "kind": "StorageV2",
        "properties": {}
    }],
    "outputs": {
        "storageAccountName": {
            "type": "string",
            "value": "[variables('storageAccountName')]"
        }
    }
}

image.png

パラメータータブにて、storageAccountTypelocationのパラメーターが検出されたことが確認し、"追加"ボタンを押下します。
image.png

ブループリントの作成

以下のようなブループリントが作成できたことを確認し、ページ下部にある"下書きの保存"ボタンを押します。
image.png

ブループリントの発行

"ブループリントの定義"を選択します。
image.png
表示されたブループリント一覧の中で、先ほど作成したものを右クリックして、"ブループリントを発行する"を選択します。
image.png
バージョンを"v1"として、ページ下部にある"公開"ボタンを押下します。
image.png

ブループリントの割り当て

"ブループリントの定義"を選択します。
image.png
表示されたブループリント一覧の中から、先ほど作成したものを右クリックし、"ブループリントの割り当て"を選択します。
image.png
各項目を以下のように入力した後、"割り当て"ボタンを押下します。
image.png

ブループリントのデプロイを追跡

"割り当てられたブループリント"を選択します。
image.png
表示されたブループリント一覧の中から、先ほど割り当てたものを右クリックし、"割り当ての詳細を表示する"を選択します。
image.png
全ての成果物が正常にデプロイされたことと、デプロイ時にエラーが発生しなかったことが確認できます。
image.png
実際、選択したサブスクリプション内に新しく"StorageAccount"のリソースグループが作成されていることが確認されました。
image.png
"StorageAccount"のリソースグループには、ストレージアカウントが作成されていました。
image.png
ブループリントで指定した通りの内容でアカウントが作成されていました。
image.png

Azure Policy

Azure Policyとは、管理者が定義したルールを適用し、コンプライアンスやセキュリティの観点からリソースの構成や展開を制御するためのサービスです。Azure Policyを使用することで、リソースを制御または監査するポリシーの作成、割り当て、管理を行うことが可能です。また、ポリシーに準拠していないリソースが明示させたり、準拠していないリソースを作成を禁止することも可能です。

Azure Policyの継承

Azure Policyはリソース、リソースグループ、サブスクリプションなどの各レベルで設定可能です。Azure Policyは継承され、高レベルでポリシーを設定すると親に含まれるすべてのグループに自動的に適用されます。たとえば、リソースグループにAzure Policyを設定すると、そのリソースグループ内に作成されたすべてのリソースが同じポリシーを自動的に受け取ります。

Azure Policyによるリソースの修復と例外フラグ

ポリシーに準拠していないリソースや構成をAzure Policyで自動的に修復して、リソースの状態の整合性を保証することができます。例えば、リソースにタグを付与するポリシーを設定していた場合、タグが未設定でも自動的に再適用されるようになります。また、自動修正させたくない特定のリソースがある場合、リソースに例外フラグを設定することで、ポリシーによって自動修正されることはなくなります。

イニシアティブ

イニシアティブ(PolicySetとも呼ぶ)とは、関連するポリシーをまとめてグループ化することを言います。そのため、サブスクリプションやマネージドアプリケーション、ポリシールールなどを一元的に管理することが可能になり、ポリシー定義の管理と割り当てが簡素化されます。

Azure PolicyとAzure Blueprintsの違い

Azure PolicyAzure Blueprintsも共に、Azureのリソース管理に使用するツールでですが、Azure Policyはルールに順守しないリソースを自動的に修正するツールであるのに対し、Azure Blueprintsは標準化されたソリューションを導入するツールです。

  • Azure Policy
    • リソースの状態を監視し、定義したルールに従って評価し、必要に応じて自動的に修正するためのサービス
    • Azureリソースを一貫性のある状態に維持し、コンプライアンスの要件を確認することができる
    • Azure Blueprintsの一部として使用されることができる
  • Azure Blueprints
    • 複数のAzureサブスクリプション、複数の地域、複数のリソースグループで標準化されたソリューションを導入するためのサービス
    • 複数のARMテンプレート、ポリシー、ロールの組み合わせを1つのパッケージとして定義し、再利用可能なリソーススキーマを提供する

Azure PolicyとAzure RBACの使い分け

Azure PolicyAzure RBACは、両方ともAzureのアクセス制御を管理するために使用されますが、異なる目的を持っています。Azure Policyはリソースの設定を管理することが目的であり、Azure RBACはユーザーのアクセス許可を管理することが目的です。

  • Azure Policy

    • リソースの設定を強制するために使用されます
    • 誰が変更を行ったかや、誰が変更を行うアクセス許可を持っているかに関係なく、リソースがビジネスルールに準拠した状態になります
  • Azure RBAC

    • ユーザーのアクセス許可を管理するために使用されます
    • あるユーザーがアクションを実行するためのアクセス権を持っていても、結果としてリソースが準拠していない場合、その作成や更新は Azure Policyによってブロックされます

AzureポータルでAzure Policyを使用してみる

適当なリソースグループの作成

ここでは適当なリソースグループを作成し、作成したリソースグループに対してポリシーを設定することにします。
image.png
問題がなければ、リソースグループを作成します。
image.png

ポリシーの作成

Azureポータルの左側に、"ポリシー"とされているので選択します。
image.png
"ポリシーの割り当て"を選択します。
image.png
ポリシーの割り当てページが表示されます。
image.png
"ポリシー定義"の省略記号(...)を押下します。右側にポリシー一覧が表示されるため、検索窓に"タグ"と入力し、"タグとその値がリソースに必要"を選択します。
image.png
"割り当て名"は自動的に入力されます。
image.png
パラメーターのタブを選択し、任意のタグ名とタグ値を入力します。
image.png
確認及び作成のタブを選択し、問題が無ければ"作成"ボタンを押下します。
image.png
ポリシーが追加されていることが確認できました。
image.png

ポリシーの有効性についての確認

タグが未設定のリソースを作成しようとした時、ポリシー違反によりリソースが作成されないことを確認するため、先ほど作成したリソースグループの中にリソースを作成していきます。リソースは任意のものでよいですが、ここではAzure Functionsを利用します。設定は以下のようにしました。
image.png
タグを設定しないとポリシー違反になることを確認したいため、タグは空白のままにしておきます。
image.png
確認及び作成のタブを選択し、問題がなければ"作成"ボタンを押下します。
image.png
"タグとその値がリソースに必要"のポリシーを設定しているにもかかわらず、タグを設定せずにリソースを作成しようとしたことから、リソース違反のエラーが表示されることが確認できました。
image.png

リソースロック

RBACポリシーが適用されていても、アクセス権を持つユーザーが重要なリソースを削除・変更するリスクがあるため、リソースロックを使用することで意図しない削除・変更が行われるのを防ぐことができます。リソースロックには削除と読み取り専用の2種類存在し、Azureポータル、Power Shell、Azure CLI、ARMテンプレートから管理が可能です。また、リソースロックは継承されるため、リソースグループにリソースロックを設定すると、リソースグループ内のすべてのリソースにもリソースロックが適用されます。ロックされたリソースを削除または変更するためには、事前にロックの解除を行っておく必要があります。

Azureポータルでのリソースロックの設定

以下のスクリーンショットは、ストレージアカウントに対してロックを追加している様子です。ここでは、読み取り専用のロックを設定します。
image.png
設定後、ストレージコンテナーを作成しようとすると、次のようなエラーが表示され、ストレージコンテナーの作成に失敗したことが確認されます。これは、読み取り専用ロックにより、ストレージアカウントの作成または更新の操作ができないためです。
image.png
当然、削除もすることができません。
image.png
ロックを解除することで、変更・削除が可能になります。

Microsoft Service Trust Portal

Microsoft Service Trust Portal(https://servicetrust.microsoft.com/ )は、マイクロソフトのクラウドサービスに関する信頼性とセキュリティに関する情報を提供するウェブポータルです。このポータルは、マイクロソフトの顧客とパートナーに、マイクロソフトのサービスの信頼性とセキュリティに関する情報を提供し、企業の情報セキュリティポリシーとコンプライアンス要件を満たすのに役立ちます。
image.png

おわりに

ガバナンスやコンプライアンスは個人で開発する分には重要度が低くなりますが、会社で開発する分には重要になる分野なので、この機会に体系的に学ぶことができて良かったです。まだまだAzureの勉強中なので、間違い等ございましたら教えていただけると嬉しいです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?