kkamegawa's weblog

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

Azure DevOps 2022/3/29の更新

だいぶ遅れましたが、Azure DevOps sprint 201リリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

今までREST API使ったら削除したはずの添付ファイルを履歴からとってこれたんですね😅。これはコンプラ上どうなんだというきはしますので、改善されて何よりです。パイプライン用の拡張機能で拡張するためのエンドポイントが増えたのはいいことです。活用する拡張機能できるといいですね。

Azure DevOps ServerからServiceへ移行するとき、オンプレミスのサーバー版には存在したパイプラインごとの保持ポリシーが無効になります。このミスマッチが移行時の問題になることが多かったので、改善するそうです。とはいえ、日本語照合順序の移行を早くですね。

今までREST APIでパイプラインの結果を取得するとき自分自身のレポジトリしかとってこれなかったのですが、すべてのレポジトリが対象になるようです。そういうビューを作っている人向けには処理が簡単になりそうですね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

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)
  }
}

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