2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Azure Automation の Runbook から Azure Database for PostgreSQL Flexible Server を停止・再起動しようとした際、
「自分は共同作成者を持っているのに、なぜ実行できないのか?」
「Automation 共同作成者を付ければよいのか?」
「Runbook に付与すべき権限は誰に対して、どこに付けるのか?」
という点で混乱したため、整理した内容をまとめます。

結論:権限を付ける相手とロールを間違えない

今回のポイントは、次の2つです。

Runbook を実行する主体は、Azure Portal を操作しているユーザーではありません。
実際に Azure リソースを操作するのは、Automation アカウントのマネージド ID です。

そのため、作業者自身が 共同作成者(Contributor)User Access Administrator を持っていても、
Runbook のマネージド ID に対象リソースへの権限が付与されていなければ、Runbook からの停止・再起動は失敗します。

また、付与するロールも間違えやすいポイントです。

選ぶべきロールは「Automation 共同作成者」ではありません。
対象 PostgreSQL Flexible Server、または対象リソースグループに対する「共同作成者(Contributor)」です。

整理すると、以下の通りです。

項目 正しい指定
権限を付与する相手 Automation アカウントのマネージド ID
付与するロール 共同作成者(Contributor)
付与先スコープ 対象 PostgreSQL Flexible Server、または対象リソースグループ
間違えやすいロール Automation 共同作成者

つまり、今回の正解は次です。

Automation アカウントのマネージド ID
  ↓
対象 PostgreSQL Flexible Server または対象リソースグループ
  ↓
共同作成者(Contributor)を付与

まず押さえるべき登場人物

今回の権限設計では、登場人物を分けて考える必要があります。

区分 対象 必要な権限
ロールを付与する人 作業者、管理者 User Access Administrator または Owner
Runbook の実行主体 Automation アカウントのマネージド ID 対象リソースへの Contributor
操作対象 PostgreSQL Flexible Server 停止・再起動されるリソース

特に混乱しやすいのは、自分に Contributor があることと、Runbook のマネージド ID に Contributor があることは別物、という点です。

Azure RBAC では、ロール割り当ては「セキュリティ プリンシパル」「ロール定義」「スコープ」の組み合わせで成立します。セキュリティ プリンシパルにはユーザー、グループ、サービス プリンシパル、マネージド ID が含まれます。

「自分は”Contributor(共同作成者)”なのにできない」理由

Azure の Contributor は、リソースの管理権限を持つ強いロールです。
しかし、Contributor には Azure RBAC のロール割り当て権限は含まれません

Microsoft Learn では、Contributor はすべてのリソースを管理するフルアクセスを付与する一方で、Azure RBAC のロール割り当てはできないと説明されています。
つまり、以下のように整理できます。

自分の権限 できること できないこと
Contributor リソースの作成・変更・削除など 他の ID への RBAC ロール割り当て
User Access Administrator Azure リソースへのアクセス管理 リソース操作そのものは別ロール次第
Owner リソース管理 + ロール割り当て ほぼ全権限

Azure Automation のマネージド ID にロールを割り当てるには、Microsoft.Authorization/roleAssignments/write が必要であり、代表例として User Access Administrator または Owner が挙げられています。

付与すべきロールは「Automation 共同作成者」ではない

Azure Portal のロール検索で「共同作成者」と入力すると、以下のようなロールが多数表示されます。

  • 〇 共同作成者
  • × Automation 共同作成者
  • × Data Factory 共同作成者
  • × Log Analytics 共同作成者
  • × API Management サービス共同作成者
  • × Application Insights コンポーネント共同作成者

ここで選ぶべきなのは、単に「共同作成者」と表示される Contributor です。
Automation 共同作成者 は、Automation アカウント自体を管理するためのロール。
※そのため、Automation アカウントではなく、操作対象である PostgreSQL Flexible Server 側に対して Contributor を付与する必要があります。

カスタムロールを使わない場合の現実的な解

この記事では「カスタムロールを作らず、簡潔に済ませる」ことを前提にします。
その場合は、以下の付与が分かりやすいです。

対象:Automation アカウントのマネージド ID
ロール:共同作成者(Contributor)
スコープ:対象 PostgreSQL Flexible Server

または、複数リソースを同じ Runbook で管理する場合は、以下も選択肢になります。

対象:Automation アカウントのマネージド ID
ロール:共同作成者(Contributor)
スコープ:対象リソースグループ

Contributor はリソース管理のフルアクセスを付与しますが、Azure RBAC のロール割り当てはできません。
そのため、Runbook の実行主体に対して「対象リソースを操作させる」用途では、実務上シンプルな選択肢になります。

推奨する付与スコープ

可能であれば、スコープは狭くします。
おすすめ順は以下です。

優先度 スコープ コメント
1 対象 PostgreSQL Flexible Server 最も範囲が狭い
2 対象リソースグループ VM や関連リソースも同じ Runbook で操作する場合
3 サブスクリプション 原則避ける

RBAC のスコープは、管理グループ、サブスクリプション、リソースグループ、リソースの各レベルで指定できます。

Azure Portal での設定手順

1. Automation アカウントのマネージド ID を確認する

  1. Azure Portal で Automation アカウントを開く
  2. ID を開く
  3. システム割り当て済み が有効になっていることを確認する
  4. オブジェクト ID または名前を確認する

Azure Automation のシステム割り当てマネージド ID を有効にすると、Automation アカウントを表すサービス プリンシパルの principalId が割り当てられます。

2. 対象 PostgreSQL Flexible Server を開く

  1. Azure Portal で対象の Azure Database for PostgreSQL Flexible Server を開く
  2. アクセス制御 (IAM) を開く
  3. 追加ロールの割り当ての追加 を選択する

3. ロールを選択する

検索欄では、以下に注意します。

NG:

Automation 共同作成者
Data Factory 共同作成者
Log Analytics 共同作成者

OK:

共同作成者
Contributor

ポイントは、**サービス名が前についていない汎用の「共同作成者」**を選ぶことです。

4. メンバーを選択する

メンバーには、ユーザーではなく以下を指定します。

Automation アカウントのマネージド ID

ここを自分のユーザーにしてしまうと、Runbook 実行時には権限が不足します。

まとめ

Azure Automation Runbook で Azure Database for PostgreSQL Flexible Server を停止・再起動する場合、権限設計のポイントは以下です。

  • Runbook の実行主体は Automation アカウントのマネージド ID
  • 対象 PostgreSQL Flexible Server に対して、そのマネージド ID へ権限を付与する
  • 組み込みロールで簡潔に済ませるなら Contributor を付与する
  • Automation 共同作成者は、今回の PostgreSQL 操作用ロールではない
  • ロールを付与する人には User Access Administrator または Owner が必要
  • Runbook 公開前に削除系コマンドが混ざっていないか確認する

RBAC は「誰が」「どのロールで」「どのスコープに対して」操作するかを分けて見ると整理しやすいです。
Automation の場合は特に、操作している自分ではなく、Runbook の ID に権限が必要という点を忘れないようにしたいです。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?