👏

【AZ-104】ガバナンスとコンプライアンスの解説

2024/01/14に公開

はじめに

この記事では、Azure のガバナンスとコンプライアンスについて解説していきます。
Azure の資格である AZ-104(中級レベルの試験)の勉強をしている方の参考になれば幸いです。
これから Azure にふれる方や、AZ-900 を勉強している方にも役立つ記事になるはずです。

Azure の環境管理

Azure を利用する時に、組織内で様々なテナント、サブスクリプション、リソースを管理するシナリオはよくあります。
ここでは組織として Azure の利用制限やルール設定に役立つ環境管理の手段を紹介します。

タグ

各リソースに「キーと値」の組み合わせのタグを付けることができます。
タグ付けをすることで検索性の向上やタグ毎のコスト集計に役立ちます。
例えば部署:営業部のリソースのコストだけを集計したい、用途:テストのリソースのみを部門で管理したいといった時に有効です。

ロック

誤った操作で大切なリソースが変更される、削除されることを防ぐためにリソースの変更や削除操作に対して制御をかけることが可能です。
ロックの設定は 2 つです。

ロックの種類 読み取り 変更 削除
削除ロック 不可
読み取り専用ロック 不可 不可

上位のスコープで設定されたロックは下位のスコープに継承されます。
例えば、リソースグループに削除ロックをかけたとき、そのリソースグループ内のリソース全て削除することができなくなります。

クォータ

作成できるリソースの数などの上限を設定できます。
「安全装置」のようなイメージで、無駄な課金や意図せず多額の請求をされる自体を未然に防ぐための機能です。
(エンドレスに仮想マシンを作成するスクリプトを実行してしまった時にクォータがなかったら恐ろしいですね。)
クォータはサブスクリプションごとに設定されています。
クォータは既定で適用されていますが、サポートリクエストを送信するもしくは各クォータの詳細画面から増加要求することで変更することが可能です。

Azure Advisor

Azure 環境やリソースに対して、Microsoft のベストプラクティスを提案してくれる機能です。
Azure に関するコンサルのような役割と捉えていいでしょう。
例えば、「仮想マシン A が殆ど使われていないので停止すると良いです」という趣旨の推奨事項を表示してくれます。
Azure Advisor のアドバイスを必ずしも受け入れる必要はなく、あくまでも提案という位置づけという点に留意して下さい。
観点は 5 つです。

  • 信頼性
  • コスト
  • パフォーマンス
  • セキュリティ
  • オペレーションエクセレンス

管理グループ

組織で複数のサブスクリプションを所有している場合、リソースのリージョン制限などを各サブスクリプションに割り当てたいなどのシナリオが考えられます。
その時に、1 つずつポリシーなどを割り当てるのは手間がかかります。
こうした、Azure Policy や RBAC を複数サブスクリプションに割り当てる時に管理グループが役立ちます。
階層としては管理グループ > サブスクリプション > リソースグループ > リソースという階層になります。
管理グループで設定したポリシーなどは配下のスコープに継承されます。
管理グループを入れ子構造にすることも可能です。サブスクリプションは必ず 1 つの管理グループにのみ紐付きます。

コスト管理

コストシミュレーション

リソースのコスト見積もりに利用される料金計算ツールが Microsoft から提供されています。
リソースやパラメータを指定すると、そのリソースにかかるコストの概算を表示してくれます。

コスト分析

現在発生しているコストを確認するときは、Azure ポータルのコスト管理 > コスト分析メニューを使います。
累積コストや 1 日あたりのコスト、タグごとのコストなどを様々なビューで確認できます。
タグごとにコストを集計できるので、ここでタグの意味が発揮されますね。
コスト管理メニューでは予算を設定できます。例えば予算額の 80%を超えた時にアラートメールを送信する設定も可能です。
ただの通知だけではなく、特定のアクション(仮想マシンを停止するなど)を実行することもできます。

コスト削減オプション

Azure では費用対効果を向上できるように、いくつかのコスト削減方法が用意されています。

  • 予約
    1 年または 3 年という長期使用のためのオプションです。
    サービス料金を前払いまたは月払いすることで、最大 72%削減できます。
  • Azure ハイブリッド特典
    ソフトフェアアシュアランス(SA)を購入している組織向けのコスト削減オプションです。
    組織で所有しているライセンスを Azure へ持ち込むことで、コストを削減できます。
  • Visual Studio サブスクライバー向けの Azure クレジット活用
    Visual Studio サブスクリプションに登録しているサブスクライバーは、月単位の Azure クレジットを利用できます。
    開発やテスト用に時間単位の特別割引料金が適用されることでコストを削減できます。

Azure Policy

Azure Policy では、リソースに対して組織独自の規定やルールを定めることができます。
独自のコンプライアンス要件を持つとき、リソース管理の一貫性を高めるときなどのニーズに答えるのがこの機能です。

Azure Policy の実装手順

手順は以下です。詳細は次の項目から説明します。

  1. ポリシー定義の作成
  2. イニシアティブ定義の作成
  3. 割当の設定
  4. 結果と評価の確認

ポリシー定義

まずはポリシー定義を作成します。
1 から作成もできますし、組み込みポリシー(テンプレートのようなもの)も利用できます。
代表的な組み込みポリシー定義の例のとおりです。

ポリシー定義 説明
使用できるリソースの種類 どのリソースを作成できるかどうかの規定
許可されている場所 リソースの選択可能なリージョンはどこかの規定
許可されている仮想マシンサイズ SKU 仮想マシンで選択できるサイズの規定

イニシアティブ定義

複数のポリシー定義をグループ化するための定義です。
複数のポリシーを同時に適用し、それぞれに準拠しているかどうか確認したい時に設定します。※設定は必須ではありません。

割当の設定

ポリシー定義またはイニシアティブ定義をどこのスコープに割り当てるか設定します。
管理グループ、サブスクリプション、リソースグループのいずれかに設定可能です。
定義は下位スコープに継承されます。
ただし、スコープから一部のリソースグループやリソースを除外することも可能です。

結果と評価の確認

割り当てた内容が指定したスコープ内に適用されているか確認します。
ポリシーに準拠していないリソースを作成した場合、ポリシーに準拠していない旨のエラーメッセージが表示されます。
また、既存のリソースに対してはポリシーに準拠しているかどうかスキャンし、評価を行います。
準拠されていないリソースは自動的に削除されることはありませんが、「非準拠のリソース」としてリストアップされます。
ポリシーは既存のリソースにも適用されるということを覚えておいてください。

RBAC(Role-Based Access Control)

リソースのアクセス制御をする際に使われる機能です。
管理グループ、サブスクリプション、リソースグループ、リソースといった各スコープに細かいアクセス制御を設けることで
組織の様々なアクセス管理のニーズに対応できます。

組み込みロール

120 を超える組み込みロールがあります。
代表的な組み込みロールの例は以下です。

ロール 説明
所有者 すべてのユーザーへのアクセス付与権限やリソースのフルコントロールのアクセス権限を有する
共同作成者 アクセス権の付与はできないが、リソースのフルコントロールのアクセス権を有する
閲覧者 既存のリソースの表示のみ可能

ロール定義の構造

ロールの定義は JSON ファイルで定義されています。
例えば所有者のロールは以下のような JSON になります。

{
  "assignableScopes": ["/"],
  "description": "Grants full access to manage all resources, including the ability to assign roles in Azure RBAC.",
  "id": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
  "name": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
  "permissions": [
    {
      "actions": ["*"],
      "notActions": [],
      "dataActions": [],
      "notDataActions": []
    }
  ],
  "roleName": "Owner",
  "roleType": "BuiltInRole",
  "type": "Microsoft.Authorization/roleDefinitions"
}

カスタムロール

組み込みロールでニーズを満たせないときは、独自のロール(カスタムロール)を作成することも可能です。
カスタムロールは、3 つの方法で作成できます。

  • 既存のロールを複製する(一番簡単)
  • 最初から作る
  • JSON ファイルをアップロードする

ロールの割当

ロールの設定が終わったら、ポリシーと同じくどのスコープにロールを割り当てるか設定します。
ロールはユーザーやグループの他にサービスプリンシパル(アプリケーション)に対しても割り当て可能です。
例えば仮想マシンの起動や停止をできるアプリがあり、そのアプリにロールを割り当てた場合、
そのアプリから Azure にアクセスする時にアプリケーション ID としてサービスプリンシパルが使用されます。
ロールも下位スコープに継承されます。

複数のロールを割当したとき

複数のロールを割り当てた場合、実行可能なアクションは各ロールの和集合になります。
例えば、サブスクリプションで閲覧者ロールが割り当てられていて、リソースグループ A には共同作成者のロールが割り当てられているとします。
その場合ユーザーはリソースグループ A はフルコントロールできますが、リソースグループ B に対しては表示のみ可能になります。

Azure のロールと Azure Entra ID のロールの違い

ここまで Azure のロールについて説明してきましたが、Azure Entra ID のロールと混在してはいけません。
どちらもユーザーやグループに制御を与えるものですが、両者は全くの別物なので注意です。

# Azure Azure Entra ID
目的 Azure のリソースに対するアクセス管理 Azure Entra ID に対するアクセス管理
スコープ 管理グループ・サブスクリプション・リソースグループ・リソース テナント・管理単位・個々のオブジェクト
カスタムロール 作成可能 Premium でのみ作成可能

おわりに

以上、AZ-104 の「ガバナンスとコンプライアンス」に関わる情報でした。
詳細の仕組みなどを知りたい場合は以下の書籍や公式ドキュメントを御覧ください。

合格対策 Microsoft 認定試験 AZ-104:Microsoft Azure Administrator テキスト&演習問題

(模擬問題付き)徹底攻略 Microsoft Azure Administrator 教科書[AZ-104]対応

最後まで読んでいただきありがとうございました。

ヘッドウォータース

Discussion