概要
GoogleCloudのIAMにおいて、ユーザやサービスアカウントの権限の棚卸しをする際に、とあるIAMパーミッションがどのロール・ユーザ(メンバー)に含まれるか調べる方法です。
事前に以下を知っておくとイメージが付きやすいです。
手順
ロールやユーザ(メンバー)の関係図は次のようになっています。
続きを読む
Bazelで依存関係を管理している環境で、celライブラリを導入したところ次のようなエラーが発生しました。
'@com_github_google_cel_go//cel:cel': target 'cel' not declared in package 'cel' defined by /external/com_github_google_cel_go/cel/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/celext:celext' '@com_github_google_cel_go//common/overloads:overloads': target 'overloads' not declared in package 'common/overloads' defined by /external/com_github_google_cel_go/common/overloads/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/celext:celext' '@com_github_google_cel_go//common/types:types': target 'types' not declared in package 'common/types' defined by /external/com_github_google_cel_go/common/types/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/celext:celext' '@com_github_google_cel_go//common/types/ref:ref': target 'ref' not declared in package 'common/types/ref' defined by /external/com_github_google_cel_go/common/types/ref/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/celext:celext' '@com_github_google_cel_go//common/types/traits:traits': target 'traits' not declared in package 'common/types/traits' defined by /external/com_github_google_cel_go/common/types/traits/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/celext:celext' '@com_github_google_cel_go//ext:ext': target 'ext' not declared in package 'ext' defined by /external/com_github_google_cel_go/ext/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/celext:celext' '@com_github_google_cel_go//cel:cel': target 'cel' not declared in package 'cel' defined by /external/com_github_google_cel_go/cel/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/expression:expression' '@com_github_google_cel_go//interpreter:interpreter': target 'interpreter' not declared in package 'interpreter' defined by /external/com_github_google_cel_go/interpreter/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/expression:expression' '@com_github_google_cel_go//cel:cel': target 'cel' not declared in package 'cel' defined by /external/com_github_google_cel_go/cel/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/constraints:constraints' '@com_github_google_cel_go//cel:cel': target 'cel' not declared in package 'cel' defined by /external/com_github_google_cel_go/cel/BUILD.bazel and referenced by '@com_github_bufbuild_protovalidate_go//internal/evaluator:evaluator'
これはcel-goに依存していた場合のBazelのターゲットの記述が本来は
go_library(
...
deps = [
...
"@com_github_google_cel_go//cel:go_default_library",
...
],
)
であるべきが、gazelleを使ったところ
go_library(
...
deps = [
...
"@com_github_google_cel_go//cel",
...
],
)
となってターゲットの記述が不適切になってしまったせいです。
今回はこの回避策方法について説明します。
続きを読むGoのテストを書いていると大半のフィールドは検査したいけれど
を対象外としたいケースが出てきます。
単純に考えると以下のような方法が浮かびますが、それぞれ欠点があります。
そういった部分をどう除外するかを説明します。
JWS(JWT系アクセストークンやAppleのレシートなど)の中身をサクッと見たいけれど、Web上のサービスを使うとログに残ったりして情報漏洩のリスクがあるのでローカルでデコードしたい場合の手順です。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
というダミーのJWSがあるとします。
中身は以下です。
{ "alg": "HS256", "typ": "JWT" }
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Bazelでは次のようなディレクトリ構成で、
. ├── package_a │ ├── a.go │ ├── a_test.go │ └── test.yaml └── package_b ├── b.go └── b_test.go
パッケージAのファイルtest.yaml
をパッケージBのテストで参照したい時に、
go_test( name = "b_test", srcs = ["b_test.go"], deps = ["//path/to/package_a:package_a_lib"], data = ["//path/to/package_a"], )
としても、直接は参照できないです。
今回はその解決方法です。
たまにPlantUMLでシーケンス図を書くと、altとoptの区別がごっちゃになることがあるのでメモします。
else if および else を設定できる。
else if および else が設定できない。
続きを読む僕は通常Todoistでタスク管理をしていますが、小さな作業はThino(旧Memos)経由でデイリーログにチェックボックスとして追加します。
例えば「後で読む」みたいなやつです。
しかしながらその日中に終わらなかったタスクは忘れ去られてしまいがちです。
なので複数のノートをまたいでチェックボックスを一覧化する方法を模索しました。
Checklistというプラグインは#todo
というタグを付けると、そのファイルの中にあるチェックボックスを次のように一覧化してくれます。
続きを読む