kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure DevOpsに侵入されないために

www.microsoft.com

www.itmedia.co.jp

※ セキュリティの専門家ではないので、Azure DevOpsの設定とか当たり前の話になります。

上記のブログをベースに追加の話を書いていきます。

MFA(多要素認証)を使おう

  • とはいってもSIM持ち出されるとつらいので、SMSでのメッセージ送信は避けたほうがいいかもね。
  • 「この場所ならMFAをバイパスする」ってのはやめよう。
  • 複数のユーザーでMFAデバイスや認証の共有は避ける

信頼できるデバイスで

f:id:kkamegawa:20220324213844p:plain

Azure ADの条件付きアクセスポリシーを使いましょう。Azure AD参加済みデバイスで所定のセキュリティ設定を満たしたものだけ使えるようにしましょう。ただしAzure AD Premium P1が必要ですが。

外部ユーザーのアクセス

これはB2Bでコラボレーションするときもあるので難しいですが、External Guest Accessの設定を有効にする場合気を付けてください。

サードパーティアプリの使用

f:id:kkamegawa:20220324213848p:plain

Third-party application access via OAuthを有効にする場合、そこが侵入経路にならないようにしましょう。定期的に棚卸して、使ってないものは消しましょう。

https://app.vssps.visualstudio.com/

このURLからアクセスすれば自分のIDで認証しているアプリケーション一覧が出てきます。

監査設定をしよう

f:id:kkamegawa:20220324213851p:plainf:id:kkamegawa:20220324213840p:plain

organization設定のAuditingから設定します。逐次見るのはつらいので、Event Grid, Monitor, Splunkなどへ出力して、イベントで何らかの通知をするようにしましょう。

パスワードリセットは慎重に

Azure ADにはセルフサービスパスワードリセットがありますが、高/中リスクユーザーに対してはブロックしましょう。特権ユーザーはリスク中でもダメ。

Azure AD Identity Protectionでリスク判定しよう(Premium P2必要)。

教育

今回はソーシャルエンジニアリング(要はだます)でやられてしまったようですが、これは教育でもなかなか難しいので、「このURL踏んでパスワードリセットしましょう」とかは絶対詐欺だから!って単純にするのがいいのかなぁ?

複雑に条件付けすると迷いますからね。

Azure AD参加するときに0x8018000aが出て参加できない

PCのアカウントをローカルのADからAzure AD Joinしようとすると0x801800aが出て参加できない状況になってしまいました。原因は\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Enrollmentsにすでにキーができていると参加できないようです。

Enrollments配下のレジストリで Context, Ownership, Status , ValidNodePaths以外を削除すれば参加可能になります。もちろんAzure ADにデバイスが登録されていないことが前提になります。

PowerShellのForeach-object parallel内でインデクサを使う

docs.microsoft.com

PowerShell 7で導入されたForeach-Object -parallelちょっと用事があってこんな感じで使おうとしました。

$outervalue = 1,2,3
$array = 10,20

$array | foreach-object -parallel {
  for($i = 0; $i -lt $using:outervalue.length;$i++){
     write-host $_ * $using:outervalue[$i]
  }
}

すると…

ParserError:
Line |
   3 |       write-host $_ * $using:outervalue[$i]
     |                                         ~~
     | Expression is not allowed in a Using expression.

こんな式は認められないと怒られました。

github.com

原因はここで書かれているのですが、parallel内の式ではオブジェクトが読み取り専用になるために、インデクサを指定するとだめなのだそうです。なので、GetValueを使って参照することになります。

$outervalue = 1,2,3
$array = 10,20

$array | foreach-object -parallel {
  for($i = 0; $i -lt $using:outervalue.length;$i++){
     write-host $_ * ($using:outervalue).GetValue($i)
  }
}

いわれてみればそうだなぁという仕様ですが、結構悩みました。

Azure DevOps 2022/2/28の更新

Azure DevOps Sprint 200到達です。おめでとうございます🎉。ということで、記念のリリースノートもそんなに長いわけでもなくいつも通り粛々と。オリジナルはこちらから読んでください。

docs.microsoft.com

Azure DevOpsのWikiは割と昔からmermaidをサポートしていたのですが、フィードバックされるものの長い間バージョンアップされず、利用者は困っていました。GitHubでサポートされたことにともないかどうかわかりませんが、Azure DevOpsでもようやく8.13.9へ更新されました。

Azure PipelinesにはPowerShellのAzモジュールとAzureRMモジュールの両方が入っていますが、AzureRMはリタイアが予告されていて、モジュール入っているPCでは警告が出るはずです。

techcommunity.microsoft.com

Azure PipelinesのFile CopyタスクでもAzureRMからAzモジュールへ移行したことでメジャーをあげたそうです。使っている人は忘れずに(多分警告出ていると思いますが)パイプラインを変更しましょう。

Artifactsも少し前からPreviewで新しいUIが来ていたと思いますが、Web Content Accessibility Guidelines (WCAG) 2.1に準拠しており、400%まで拡大しても大丈夫だそうです。こういうのはありがたいですねー。ほかのところでもやってほしい。Boardsのチケット作成のところとか拡大するとちょこちょこ見えないところがありまして…。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…