AZ-104で遊ぶ on-going 実録記 (開始2025/1/15)

皆様、公開型で資格試験の学習を記録していこうと思います。
既に受かってしまった試験についてはおさらいをしながら要点を少しずつ書いてマガジンに追加していこうと思います。

始める前に他の方の合格体験記みたいなものを読みましたが、完全試験偏重でその通りにやってもあとで大変なことになると思わせられましたので、自分の進め方は「分かってる」という状態を作る形で進めたいと思います。
新卒AZ-900合格者が1か月の学習で受かるって言ってるので、自分が受ければ受かるのは分かってます。
なので、受かることよりも、Learnとその周辺の範囲をパーフェクトに理解しているという形を作っていくための学習をしようと思います。

なぜそうやるのかですが、AZ-104の次に受けるAZ-300に照準を絞ってるからです。AZ-300は全部分かってて、さらに色んな条件やシナリオでの対応ができるかなので、製品の完全理解をしてれば模擬試験などやる必要なく合格できることになると思ってます。
同じ問題が出たときに脊髄反射で答えられるので模擬試験はやっておきますけどね。

ということで、ここから1か月くらいでしょうか。このNoteをアップデートしながら書いていこうと思います。

AZ-104:Azure 管理者向けの前提条件

Azure portal を使用してサービスを管理する
おさらいですね。AzurePortal開けたときの構成やリソース作成の基本操作等、再確認で流しておわりです。AZ-900でやってても実運用で使ってない人は再度おさらいした方が良いです。

Azure Cloud Shell の概要
読んだ瞬間重要だって分かりますね。最新版のAzure CLIとPowerShellにあらゆるブラウザーからアクセス可能で、既定で保存時の二重暗号化に準拠するインフラ全てで動作です。
専用のクラウドストレージがあり、SSH キーやスクリプトなど、ファイルを保持で、これによりセッションをまたいでのアクセスが可能となってます。またファイルは変更可能な仕様です。
これってすごいことですね。通常セッションは使い捨てですから、前回の行動を再確認できる可能性もありそうですね。これはあとでチェックです。

シナリオがいきなりトラブルシュートなんですね。

ノート PC を使用して、Azure portal に移動し、組織の Azure サブスクリプションに対する認証を行い、Azure Cloud Shell を開き、Azure ファイル共有をマウントし、診断スクリプトにアクセスして、VM の問題を診断して修復し、元の状態に戻して動作するようにします。

CloudShellのアクセス方法
https://shell.azure.com/
・Azure Portalのメニュー(AZ-900の試験で出る)
これら以外にLearnのワークアウトがあります。

そしてシェルは、BashとPoerShellから選択が可能です。セッションの有効時間は20分で、ファイルは保持されます。
この保存先はAzure Cloud Driveと名付けられています。
Cloud Shell では、特定のリージョンに関連付けられている Azure Storage ファイル共有をマップできます
スクリプトの編集にはClouldShellエディタが使用可能です。
Bashではcodeコマンドでで編集が可能です。
コマンドは拡張されていて、コンテナ管理やデータベース管理のアドオンなども含まれています。

そしてシナリオベースの話となり、ここまでに記述したことがまとめられ、使用忌避の話が医科のように記載されています。
・実行時間が長いアクティビティでセッションを20分以上放置して切断させてしまう
・管理者権限が必要な行動
・カスタム環境が必要なツール
・リージョンストレージを真卓アクション
・複数セッションの同時起動

知識チェックの問題は直接的にLearnに書かれていない内容になりますね。なので、暗記はダメなんです。
・CloudShellへのアクセス方法
・CloudShellのアドオン実行方法
・スクリプト再利用でのCloudDriveの利用
・CloudDriveのコンテンツ変更方法

ここからは冗長にならないようである調で記述していきます。

Bash の概要
UNIXコマンドのおさらい(知らない人はここで学ぶ)
UNIXの思想
・プログラムは、1 つのことを上手に行う
・プログラムは連携して機能する
・プログラムは、汎用インターフェイスとしてテキスト ストリームを使用する
ファイルっていう概念を理解できることが大切。

実際のコマンドの学習 (あとで演習があるからそこで試せばよい)
man コマンドと --help オプション。
ワイルドカードの[]や範囲の"-"の使い方。
各種基本コマンドの使い方。
I/O演算子の使い方 (管理者は必須の知識)

演習
.bash_history コマンド履歴
.bash_logout ログアウト時に読み込まれる構成ファイル
.bashrc 新しいシェルの開始時に読み込まれる構成ファイル
viコマンドのさわり。
pythonの実行とkill (grep 添え)
基本使って学ぶなので、どんどんコマンドを試すのが良い。

PowerShell の概要
コマンドレットが大きな違い。
Get-Command -Noun or -Verb は分かりやすいので熟知しておいた方がよい。

JSON ARM テンプレートを使用して Azure インフラストラクチャをデプロイする
BicepとJSONの違いを学習しておく。
Infrastructure as Code (IaC)
・リポジトリ管理可能
・一貫性、スケーラビリティ、アジャイル、追跡管理
ARMテンプレート
・リソースがどのように見えるかを示す構造と要素を構築する方法
・IaCファイルとしてリポジトリに収納し、バージョン管理可
・Resource Mnagerが調整を行う
Azure Pipelines のような継続的インテグレーションおよび継続的デプロイ (CI/CD) ツールに統合することが可能
・DevOpsと共にプロジェクトのビルドとデプロイが可能

ARM テンプレート ファイル構造

テンプレートの構成を覚えておいた方がよい。
Schema ファイルの場所(必須)
ContentVersion バージョン(必須)
apiProfile APIバージョン
parameters 各種パラメーターの指定
avaiables 言語式省略可値
functions ユーザー定義関数
resources RGまたはSubでデプロイ/更新する項目(必須)
output デプロイの最後に返す価

テンプレートのデプロイ方法
・ローカル テンプレートをデプロイする
・リンクされたテンプレートをデプロイする
・継続的配置パイプラインでデプロイする

#ここで飽きて2025 /1/15の入力が終わる。
#翌日2025 /1/16再開

ローカルテンプレートのデプロイにはAzure PowershellかAzure CLIがローカルマシンに必須。
流れ
az login <==ログイン処理
az group create \ <==RG作成
  -- name <RG>
  -- location "<location>"
# az account list-locations <==locationの取得
# az configure --defaults location=<location> <== デフォルト設定
az deployment group create <==RGでテンプレートのデプロイを開始

テンプレートファイルを使ったデプロイコマンド
templateFile="{provide-the-path-to-the-template-file}" az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile

リンクされたテンプレート
複数のテンプレートをメインテンプレートから発動可能。
SASトークン使用でセキュリティ保護が可能。
CI/CDパイプラインでARMテンプレートを含む開発PJの作成とデデプロイが自動される。Azure PipelinesまたはGitHub Actionsがよく使われる

テンプレートへのリソース追加
リソースプロバイダーとリソースの種類がセット。
形式:Microsoft.Storage/storageAccounts
これがオブジェクトとなり、そこにname, type, apiVersion等のプロパティが存在する形になる。
テンプレートはJSON形式で以下のようになる。
"resources": [
{
  "type": "Microsoft.Storage/storageAccounts",
  "apiVersion": "2023-05-01",

演習 ARMテンプレートの作成とデプロイ
Visual Studio CodeのターミナルでGit Bashなんてコマンドないし。
Azure CLIをインストールしても関係ないし。

ということで、VSCodeでのBashの使用は諦めて、PowerShellいこうとしたが、bashコマンドのままだと通らないコマンドが出てきた諦め。再度git bashを表示させる方法を模索する。
ネット情報ではsetting jasonの編集により修正できるとあるが、そもそもsetting.jasonがどこにあるのかも分からないw
Git BashはどうやらgitのBashでWindows用のものだということが判明し、とりあえずGit BashをDLしインストール。
(マイクロソフトのLearningはこんなのばっかりだから忍耐力がかなりつく。)
そしてLearnのドキュメント同様に表示されるので、やりなおす。
ここで、演習の頭にシェルの選択があるのを思い出してガッカリする。

再度頭から実行しなおして、「テンプレートをAzureにデプロイする」のコマンドでエラーが出る
az deployment group create --name $DeploymentName --template-file $templateFile
{"code": "AuthorizationFailed", "message": "The client 'live.com#xxxx@yyy.com' with object id '5f8d5292-fea4-4425-b049-a45603c6be93' does not have authorization to perform action 'Microsoft.Resources/deployments/validate/action' over scope '/subscriptions/73a8f5a6-3715-48a3-a759-2a533085c417/resourcegroups/[cloudshell1159419388}/providers/Microsoft.Resources/deployments/blanktemplate-16-1\u6708-2025' or the scope is invalid. If access was recently granted, please refresh your credentials."}

これは実行してるアカウントとサンドボックスのスコープがあわずにエラーが出てる。会社のアカウントと個人のアカウントが混在する環境なので、こういエラーが起こることが多く、Azureをいじるときはしょっちゅう似たような問題が起こる。

一旦サンドボックスを潰して、再度実行すれば良いと思うので、この演習にはまたあとで戻ってくることにしようと思う。
演習は身体で分かってる状態にするものなので、いずれにしてもやった置いた方が良い。

ということで、「パラメーターと出力を使用して Azure Resource Manager テンプレートの柔軟性を高める」を先にやっていきしょう。

ここでは、与えたパラメーターがハードコードだと横展開ができないから、これをなんとかしなければという話になり、ARMテンプレートパラメーターが登場する。
これを使用することで、定の環境に合わせて調整された値を指定して、デプロイをカスタマイズ可能。フェーズごとでデプロイの設定値を変えることが可能でparameters セクションに最大256個記述が可能。
パラメーターの型式は、string, secureString, integers, boolean, object, secureObject, arrayが設定可能。
特殊用途となるもの:
・パスワードとシークレットに secureString
・JSON オブジェクトで機密データを渡す場合は、secureObject 型

再度演習 Azure Resource Manager テンプレートにパラメーターと出力を追加する
個々相当しつこくやってるので、試験で出る場所の1つだと思う。
Azureのデプロイは決して分かりやすいとは思わないけど、筋は通ってるので、読みながらそうだよねって思えるくらいまで読解していけば演習でエラーがあっても問題ないと思う。なので、通り一遍の演習での操作を行ってからは、基本的に動きをトレースするような学習で大丈夫だろうと推測できる。
途中の書き換えのところも理由が説明されていないから分かりづらいので、丹念に読んで詳細まで理解しなきゃならない。

というところでARMを使ったデプロイメントを別途やることにして、一旦ここまで終わり。

AZ-104:Azure での ID とガバナンスの管理

モジュール構成
Microsoft Entra ID の概要
ID を作成、構成、および管理する
Azure のコア アーキテクチャ コンポーネントについて説明する
Azure Policy のイニシアティブ
Azure ロールベースのアクセス制御 (Azure RBAC) を使用した Azure リソースのセキュリティ保護
ユーザーが Microsoft Entra のセルフサービス パスワード リセットを使用してパスワードをリセットできるようにする

今度はAzureでのID管理とガバナンス全般ですね。
ADをいじったことがある人なら楽に理解できそうな感じに思います。
Directory管理を知らない人には理解が難しい部分があるかもしれないですが、オンプレミスよりも管理する対象が少なくなるように思いますので、

もうここの肝は分かっていて、オブジェクトのアクセス管理とユーザーのアクセス管理を分けて考えることと、それをコントロールする設定とポリシーで分けて考えることです。
ポリシー管理のクライアント側は試験的にはMDMで側で処理すると思いますので、AZ-104ではオペレーション管理でのポリシーがメインになるのではないかと予測しています。
何をするなら・何を禁止するなら何で制御すれば良いのかという境目をきちんと理解していることが大切になるかと思います。

Microsoft Entra ID の概要
Entra ID = PaaS。
AD との違いは、多要素認証、ID 保護、セルフサービス パスワード リセットのサポート。

できること一覧

  • アプリケーションへのアクセスの構成

  • クラウドベースの SaaS アプリケーションに対するシングル サインオン (SSO) の構成

  • ユーザーとグループの管理

  • ユーザーのプロビジョニング

  • 組織間のフェデレーションの有効化

  • ID 管理ソリューションの提供

  • 不規則なサインイン アクティビティの特定

  • 多要素認証の構成

  • オンプレミスで実装されている既存の Active Directory の Microsoft Entra ID への拡張

  • クラウドおよびローカル アプリケーションのアプリケーション プロキシの構成

  • ユーザーとデバイスに対する条件付きアクセスの構成

Basic と Premium。
Web ベースのアプリに ID 管理サービスを提供することに重点。
1 つの Azure サブスクリプション内で、複数の Microsoft Entra テナントを作成可能。(Within an Azure subscription, you can create multiple Microsoft Entra tenants)
Azure サブスクリプションは常に 1 つの Microsoft Entra テナントのみに関連付け。(At any given time, an Azure subscription must be associated with one, and only one, Microsoft Entra tenant.
この2つの内容が相違しているように見えるので、実地でチェックする必要がある。
・サブスクリプション内で複数のEntraテナントを作れる
・サブスクリプションは唯一のEntraテナントと関連付けられる。
作れるけど関連付けは1つだけって話か?

1 つの Microsoft Entra テナントで複数の Azure サブスクリプションをサポート。
GPOを使った管理ができなくなっている。
ユーザー、デバイス、アプリケーションのデータの格納と公開、ユーザー、デバイス、アプリケーションの認証と認可。
OUがなくなり、グループ メンバーシップに基づいてオブジェクトを編成で対処。
Application と servicePrincipal クラスのオブジェクトは、Microsoft Entra ID のアプリケーション。

Microsoft Entra ID と Active Directory Domain Services を比較する
AD: X.500, LDAP, Kerberos, OU&GPO
Entra ID: IDソリューション, マルチテナント, OU&GPOなし,  LDAP->REST API, Kerberos->SAML/WS-Federation/Open ID Connect, フェデレーションで外部ID使用可能

Microsoft 365、Azure、Microsoft Dynamics 365、Intune など、Microsoft のすべてのクラウドベース サービスをカバーする 1 つの ID サービスを使用。
Microsoft Entra ID は、他の ID プロバイダーまたはオンプレミスの AD DS を使用して、ユーザーに SSO エクスペリエンスを提供。
Azure portal の [認証と承認] ブレードから直接、Azure App Service の Web Apps 機能に対して Microsoft Entra 認証を有効にできる。
VSによりAzure portal の [認証と承認] ブレードから直接、Azure App Service の Web Apps 機能に対して Microsoft Entra 認証を有効にでき、デプロイ スロットごとに異なる認証設定を適用可能。

Entra ID P1/P2プラン
Premium バージョンでは、ユーザー プロビジョニングごとに追加のコストが必要。
追加のライセンスまたは Microsoft Enterprise Mobility + Security の一部。(Azure Information Protection と Intune のライセンス込み)

無料版:多要素認証、SaaS アプリ全体での無制限の SSO、基本レポート、クラウド ユーザー向けのセルフサービス パスワード変更、クラウドでユーザーとグループを管理、オンプレミスのディレクトリを Microsoft Entra ID と同期

P1:スタンドアロンとして利用可能。Microsoft 365 E3/Business Premiumに含まれる。

P2:スタンドアロンとして利用可能。Microsoft 365 E5 に含まれる。

https://www.microsoft.com/ja-jp/security/business/microsoft-entra-pricing

機能の違いは色々あって、無料とP1/P2ではだいぶ機能の差がある。
認証では、リスクベースの条件付きアクセスのみと他のID保護。
(リアルタイムの動的サインイン評価、動的ユーザー評価、トークン保護、脆弱性と危険アカウントの検出、リスクイベントの調査)
ライセンス別機能では、エンタイトルメント管理、特権ID管理(PIM)、アクセスレビューが異なる。

Learnに記載のP1/P2の利点 (再出)
・セルフサービスグループ管理
・詳細なセキュリティレポートとアラート
・多要素認証
・Mirosoft Identity Manager (MIM)のライセンス
・99.9%のエンタープライズSLA
・書き戻しを使用したパスワードのリセット
・デバイス、グループ、または場所に基づく条件付きアクセス
・Microsoft Entra Connect Health
・(P2) Microsoft Entra ID 保護
・(P2) Microsoft Entra Privileged Identity Management

ここから先は

14,455字
MCP Foundation 900シリーズ6科目全制覇をしている人は非常に珍しいと思います。専門性が100レベルで広範囲にある人と言うことができます。いわゆるなんでも知ってる人ってことですね。 広範囲に知識を持つっていうことは技術者だけでなく、システム全体を管理することもでき、企画、インプリする際にも力を発揮します。詳細な知識は個別の技術者に任せ、全体を統括することができるようになっていきます。 そういう役柄を目指していくのがこれからITプロで給与に対してハイパフォーマンスジョブになります。

2024/8にMS-900を取得し、2024/11/27-2025/1/8にAZ-900, DP-900, SC-900, AI-900,…

サポートをお願いします。サポートを活用して新境地や新たな役に立つ知識を皆様に提供させて頂きます!