kkamegawa's weblog

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

Azure DevOpsとセキュリティ&コンプライアンスのお話をしてきました

オルターブースさんからお話をいただいて、Azure DevOpsとコンプライアンスとセキュリティというお話をさせていただきました。

alterbooth.connpass.com

資料はこちらです。最初Azure Policy設定してもエラーになるのになんで?って悩みまくっていたのですが、聞いたらリソースプロバイダーがないからだといわれました。Azureポータルからは設定できるのに…。Releaseで設定したらそのついでにリソースプロバイダーも設定してほしいものです(わがまま)。

自分もこの辺知識として知ってはいたのですが、実際にどういう挙動なのかいまいち理解していないところもあったので、いい勉強になりました。今回参加できなかった方向けに再演とかデモとかやったほうがいいかな?よければコメントなり、Twitterなどでコメントください。

Azure DevOps 2021/4/13の更新

Azure DevOps Sprint 185リリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

とはいっても最近機械翻訳も出てきたので、一緒に貼り付けておきますね。

docs.microsoft.com

このスプリントのリリースノートはまだ機械翻訳ではないですが、そのうち出てくるのかな。今はまだSprint 184までが機械翻訳になっているようです。ドキュメントも機械翻訳になっているので、今まで英語だからとあきらめていた人も読んでみてください。Bingの翻訳以前よりはだいぶ良くなっています。

今回はDelivery Plans 2.0のトラッキングで長いワークアイテムの名前が省略されなくなったのはいいですね。例えば命名規則でプレフィックスを付けていたような人には助かるんじゃないかなと思います。

通常は組み込みテンプレート使うと思いますが、開発プロセスで独自のワークアイテムの種類を作ることはあると思います。そういう時バーンダウンウィジェットでは集計できなくて困っていたのが解消されるのはいいですね。

今回短いなぁ…あっという間に翻訳できてしまいました。ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Visual Studioで生成されたdockerfileではAzure Pipelinesでエラーになる

やるたびにはまって調べている気がするので、自分のためのメモです。Visual Studioでプロジェクト作るときに「Dockerサポートを追加」するとDockerfileおよび、docker-composeのプロジェクトが追加されます。ローカルではいいのですが、Azure Pipelines(に限らずたぶんCIでは)こんなエラーになります。

Step 7/26 : COPY ["kkdockerweb/kkdockerweb.csproj", "kkdockerweb/"]
 COPY failed: file not found in build context or excluded by .dockerignore: stat kkdockerweb/kkdockerweb.csproj: file does not exist
##[error]COPY failed: file not found in build context or excluded by .dockerignore: stat kkdockerweb/kkdockerweb.csproj: file does not exist
##[error]The process '/usr/bin/docker' failed with exit code 1

初期状態はこんなYAMLのはずです。

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["kkdockerweb.csproj", "kkdockerweb/"]
RUN dotnet restore "kkdockerweb/kkdockerweb.csproj"
COPY . .
WORKDIR "/src/kkdockerweb"
RUN dotnet build "kkdockerweb.csproj" -c Release -o /app/build

エラーは2回目のCOPY . .です。なんでかというと、CIとローカルマシンでdocker buildするときの場所が違うからのようです。YAMLでbuildContextを指定するか、DockerfileのCOPYを直します。Dockerfileを直しました。

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["kkdockerweb.csproj", "kkdockerweb/"]
RUN dotnet restore "kkdockerweb/kkdockerweb.csproj"
COPY . kkdockerweb/
WORKDIR "/src/kkdockerweb"
RUN dotnet build "kkdockerweb.csproj" -c Release -o /app/build

Azure SQL Databaseで一定以上の件数の抽出に対するクエリがあった場合アラートを上げたい

Azure SQL Databaseに対して監査を設定することで、SQL全権抽出した場合などにアラートをあげられるようになりました。プレビューですが、ちょっとやってみましょう。

docs.microsoft.com

f:id:kkamegawa:20210407113645p:plain

Azure SQLの監査を有効にして、Log Analyticsへ送信します。

f:id:kkamegawa:20210407111921p:plain

ログでクエリーを書いてみます。ここではテストデータがしょぼいので、過去12時間に1件以上の抽出があったものだけを対象にしています。

response_rows_dを好きな件数にしてください。

f:id:kkamegawa:20210407111926p:plain

対象のデータベース、対象となったクエリーselect* from Master_Accountなどが確認できます。消してますが、ホストやクライアントIPも出てきます。

クエリーができたので、これでアラートを作ります。

f:id:kkamegawa:20210407121336p:plain

クエリーエディターの脇にある新しいアラートルールをクリックします。

f:id:kkamegawa:20210407111930p:plain

アラートルールの作成画面が出てきます。Log Analyticsでは抽出対象時間を縛っていましたが、ここでは指定せずに単純に1件より多い件数で縛っています。

他にもIPアドレスで縛っているのであれば、そのIP以外とか指定したクライアント以外からのアクセスとか条件を追加すればいいでしょう。

f:id:kkamegawa:20210407111857p:plain

こんな風に直近24時間以内に条件に一致するアラートが検出できています。

f:id:kkamegawa:20210407111936p:plain

ディメンジョン、トリガーする違反数、評価期間を指定します。この辺はAzure Monitorそのものなので、問題ないですね。

f:id:kkamegawa:20210407111911p:plain

アクションを指定します。ない場合はアクショングループの作成から作成できます。

f:id:kkamegawa:20210407111916p:plain

全件抽出とかは重大なインシデントなので、重大度0でアラートルールを指定します。

これでOK…のはずです。

アクショングループの作成

ついでにアクショングループを作成するときです。別のブレードが開きます。

f:id:kkamegawa:20210407111903p:plain

アクショングループ名、表示名を指定します。

f:id:kkamegawa:20210407111907p:plain

通知先を指定します。ここではロールで指定できるので、管理者向けに通報が可能です。