Googleクラウドアカウントが請求書を代行する: GCP IAMの役割とサービスアカウントを利用して最小権限の原則を実現する方法
クラウドコンピューティングの安全分野では、無数の運送と設計者が会社の資産を使って、さらに自分の年末ボーナスで交換した血涙の教訓がある
クラウドでは、パスワードがないより怖いのは、誰もが管理者パスワードを使っていることだ。
」
Google Cloud (GCP) に触れたばかりの友人の多くは、手間を省くために、あるいは権限エラーをトラブルシューティングするのが面倒だから多くの場合、チームの開発、さらにはサーバーで実行されているスクリプトを直接提供して、頭がない
オーナー
(所有者) または
Editor
(編集者) ロール。このやり方は、あなたの家の玄関の万能鍵を、何十本もの清潔さ、宅配便、通行人に配布したようなものです。ある開発したコンピューターがハッキングされたり、コードの中で誤って公開されたGitHub倉庫に鍵 (Key) を提出したりするとハッカーは数秒以内にgoogleクラウドアカウント全体を完全に引き継ぐことができ、あなたの数年のコア資産を略奪し、さらにはバックグラウンドで数百台の高配機械を狂って採掘することもできます天価の料金請求書を1枚残します。
GCPの安全な世界では、大後方の核心防御兵器を死死して守り、叫ぶ
IAM(Identity and Access Management、アイデンティティとアクセス制御)
。大工場級ネットワークセキュリティの核心的な魂は、断固として貫徹することである
「最小権限の原則」
-正确な人または机械に、正确な时间に、ちょうど仕事を完了するのに十分な最小の特権を与えるだけです。
今日私たちは公式な説教を拒否し、退屈な条文を暗記しない。最もハードコアな実戦から直接切り込んで、手を持ってIAM、役割とサービスアカウントの基礎的な論理を整理して、あなたのクラウド資産のために高い基準の現代化安全防御線を溶接します。
第一段階: 深さ分解、GCP IAMの「三次元世界モデル」
GCPで権限をペアリングするには、IAMの物理的な運行モデルを頭の中で徹底的に理解しなければならない。グーグルのIAM権限制御システムは、本質的に三つの次元の要素が互いに組み合わせ、溶接死によって結ばれている
あなたは誰ですか (Members / Principals): アイデンティティの所有者です。会社の従業員のgoogleメールボックス ([email protected]など) でも、論理グループでも、後で重点的に話すサービスアカウントでもあります。
何ができるの?(Roles): キャラクターの集合です。役割は具体的な権限 (Permission) の「ギフトバッグ」である。たとえば、サーバのリストを見るには、compute.instances.list権限が必要ですサーバを再起動するには、compute.instances.start権限が必要です。グーグルはこれらの細かい権限をまとめて、様々な「役割」になった
」。
どこでやっていますか (Resources / Hierarchy): つまりリソースレベルです。これはGCPのエレガントなデザインです。権限を組織全体にかけることも、特定のプロジェクトレベルにかけることもできます特定の「GCSバケット」に正確にアクセスすることもできます。
コアセキュリティ内部者: 権限は下方向に継承されています。組織レベルで従業員のオーナーに権限を与えた場合、彼はこの会社のすべてのサブプロジェクト、すべてのサーバ、すべてのデータベースで最高の神です。そのため、大工場の規範は組織やプロジェクトの上層部で高級な役割を乱発することを厳禁する。
第二段階: コアをノックし、大工場が使用を厳禁する「三大権限巨坑」
配置する前に、私たちはまずあなたの認知を「デトックス」します。次の3つのやり方は、正規企業の安全監査では絶対的な一票否決である
1.基本的な役割を悪用する
基本的な役割とは、古いものを指します
所有者
(所有者)、
編集者
(編集者)、
Viewer
(見る者) このようなキャラクターは「粗放型」の骨董品に属する。Editorは、プロジェクト内のもの (コード変更からデータベース削除まで) をほぼ添削できる。
規範解法: 事前定義された役割を全面的に受け入れる。仮想マシンを管理する必要があるのは、Compute Adminだけですログを見るだけで、Logging Viewerだけです。専門家に専門的なことをさせる。
2.機械は個人証明書を使う
多くの新しい手書きは、クラウドデータベースをローカルで定期的にバックアップする自動スクリプトを作成しています。スクリプトが実行できるように、彼は地元で自分の個人アカウントで直接実行した
Gcloud auth login
。
災害発生: この従業員が退職すると、会社は彼のメールボックスをログアウトし、この本番環境で半年走ったバックアップスクリプトは瞬時に権限が無効になって崩壊する。
規範解法:人が歩く道、機械が機械の橋を歩く。GCPと対話する必要があるすべてのプログラム、コード、サードパーティのシステムは、サービスアカウントを使用する必要があります。
第三段階: 実戦演習 ― サービスアカウント (Service Account) で鍵のないセキュリティチェーンを貫通する
私たちは最も標準的なビジネス生産シーンをシミュレートします。Pythonバックエンドプログラムを書いて、GCPに配備しました
Compute Engine (GCE) 仮想マシン
中。このプログラムは毎日行く必要がある
Cloud Storage (GCS) バケット
ユーザーのアバター画像を読み取り、実行ログを書き込みます
Cloud Logging(日)
志サービス)
。
元のやり方では、バックグラウンドでパスワードを含むJSONキーファイル (Key) を生成し、ダウンロードしてサーバーのコードパックに詰め込む必要があります。
しかし、大手工場の安全規範は、クラウドでは、目に見える明文暗号文書は、すべて漏洩した時限爆弾であることを教えている。
GCPネイティブのサービスアカウントを利用してIAMと結び付け、真の「ゼロ鍵、高セキュリティ」を実現しています
手順1: 専用マシンidを作成する
に入る
GCPコンソール
、左上隅のナビゲーションメニューから探す
「IAMと管理(IAM & Admin) 」-> 「サービスアカウント」
。
上部にある「サービスアカウントの作成」をクリックします。
サービスアカウント名: gce-web-app-runnerという名前です。[email protected]のような独自のマシンメールボックスが自動的に生成されます。
「作成」をクリックして続行します。
手順2: 正確な灌流最小権限 (IAMバインディング)
同じ作成ページで、このマシンにどのような役割を与えるかを尋ねられます。Editorを選ばず、正確な権限カットを行います
役割のドロップダウンメニューをクリックし、「Storage Object Viewer」を検索して選択します。注意: この役割は、バケツの中のファイルのみを読み取ることができます。ハッカーがサーバーを制御しても、バケツにトロイの木馬を注入したり、バケツ全体を一度に空にしたりしたくありません。
「その他のロールを追加」をクリックし、検索して「ログライター」を選択します。注意: ログに書き込む権限のみを与え、他のシステムログを表示する権限は与えません。
完了をクリックします。
ステップ3: 魂合体 -- 身分を仮想マシンにマウントする
身分と権限がそろったので、今、私たちはそのコードを走っている仮想マシンに「この服を着て」もらう。
Compute Engine -> VMインスタンスページに来て、あなたのWebサーバーをクリックし、编集をクリックします。
下を見て、「サービスアカウント」の設定項目を見つけます。
ドロップダウンメニューで、デフォルトのデフォルトサービスアカウントを切り取って、新しく作成したgce-web-app-runnerを正確に選択します。
ついでに、下の「アクセス権限の範囲」を「すべてのCloud APIへのフルアクセスを許可する」に変更します。設計者の技術は穴の内幕を避ける: ここは無数の初心者が最も無知な場所である。GCP早期利用
「アクセス権限の範囲」が車をコントロールするのは、今では古くなっている。次世代の規範は、ここで大きな青信号 (Full Access) をつけて、本当の権限安全ゲートを完全に上の第二ステップのIAM役割に引き継ぐことである。
「保存」をクリックして、インスタンスを再起動します。
奇跡の瞬間: コード内部の「鍵なし神技」
今、このサーバに接続して、Pythonコードを見てみましょう。コードに何も書く必要はありません
Aws_access _ key
グーグルのJSONパスワードファイルをハードコードしています。グーグルの公式SDKを直接呼び出すだけです
Python
From google.cloud import storage
# 魂を注ぐ: 鍵パラメータを伝える必要はなく、SDKは自動的にホストのネットカードにマウントされたService Account idを嗅ぎます
Storage_client = storage.Client()
Bucket = storage_client.bucket("my-user-avatars")
ブロブ = bucket.ブロブ ("user_101.jpg")
# シルク読み取り
Data = ブロブ.download_as_bytes()
Print (「データのパスワードなしの読み取りに成功しました! 」)
身分と権限はグーグルのネットワークの下で自然な閉ループを完成したので、あなたの生産環境コードには平文パスワードはありません。ハッカーはGit倉庫をひっくり返しても、クラウドの主権の断片を盗んではいけない。
第四段階: 商業級運送次元のピット血涙史と防御線の強化
この鍵のない枠組みが走った後、あなたのクラウド資産のセキュリティ係数はすでに95% のワークショップチームを超えている。しかし、最高安全責任者 (CISO) として、すぐに行政命令を出して、次の二つの重大な安全事故を引き起こしやすい目に見えない穴を溶接しなければならない
1.手動で「サービスアカウント鍵 (JSON Key) 」を生成することを断固として禁止する
サービスアカウントの詳細ページには「キー」というタブがあり、「新しいキーを作成」をクリックしてJSONファイルをダウンロードできます。
残酷な現実: 多くの開発は図の便利さのために、ローカルでコードをデバッグする時に環境変数を割り当てるのが苦手で、自分のパソコンにJSONキーを直接生成した。彼のパソコンが紛失したり、退職時にこの書類をマイクロレターで私信したりすると、会社の安全な鉄線網は直接大きな穴を開けられた。また、このような手動で生成されたKeyのデフォルトの有効期間は数年に及ぶため、監査は非常に困難である。
大工場防御規範: 組織ポリシーを通じてサービスアカウントの作成を根本的に禁止する。 * ローカルコンピュータで開発するにはデバッグが必要です
、彼らにgcloud auth application-default loginコマンドを使用して、彼ら個人の企業googleメールボックスを通じてローカルで一時的に動的な有効証明書を取得するよう指導する。クラウドコール (AWSのマシンがGCPに接続したい) の場合は、Workload Identity Federation (ワークロードのアイデンティティ連携) を採用して、AWSが独自のOIDCトークンとGCPで直接暗号を空にし双方向の物理キーなし通信を実現します。
2.「IAM条件制限」の次元ダウン打撃を受け入れる
伝統的な権限が与えられると、24時間365日有効になる。しかし、もしあなたの会社が緊急オンライン障害に遭遇した場合、アウトソーシングの専門家が今日の午後に一時的に生産環境のデータベースを見に入って、今日を過ぎたら権限を回収する必要があります。どうすればいいですか
原始的なやり方: 今日は役をつけて、仕事が終わる時は頭で覚えて削除します。万一忘れた場合、アウトソーシング専門家のアカウントは永久的な危険になる。
高度な仕様設定: IAMページでロールを付与するときは、「条件を追加」をクリックします。非常に正確なルールを書くことができます。このユーザーの権限が有効になります。」と言いました時計が18時を過ぎると、グーグルのネット脳は自動的にそのユーザーの許可証を瞬時に無効にする。定時に溶断し、後患を少しも残さない。
まとめ
Google Cloudで最小権限管理規範をプレイすると、核心的な工業レベルの真髄は実は16文字にある
人は人道的に歩いて、機械は積載して、明文を根絶して、時効は溶断します。
。
クラウドの安全は、さまざまな煩雑な口頭規則制度によって人間性を制限するのではなく、この天衣がシームレスで、クラウドの原始的な基礎に沈んだ分散IAMメカニズムによって、物理的な次元降下隔離を形成しなければならない。主導権を「最小権限原則」に渡し、無鍵通信による究極の開発爽快感を享受すると同時に、あなたのクラウド商業帝国全体を公ネット上で泰山のように安定させる。
