組織を作成および管理する

組織リソースは、Google Cloud Platform リソース階層のルートノードで、プロジェクトの階層的なスーパーノードです。このページでは、組織リソースの作成および管理方法について説明します。

はじめに

組織リソースの概要をお読みください。

組織リソースを作成する

組織リソースを使用できるのは、G Suite ユーザーのみです。G Suite の既存ユーザーは、営業チームに連絡し、組織リソースの作成を依頼してください。G Suite ユーザー以外のユーザーが組織リソースを作成するには、営業チームに連絡し、G Suite アカウントと組織リソースの両方を作成してもらうように依頼してください。

組織に既存のプロジェクトを移行する

組織リソースがドメインに作成されたら、既存のプロジェクトをその組織に移動できます。プロジェクトは、プロジェクトのオーナーまたは編集者であると同時に、組織の Project Creator のみが移動できます。

組織リソースの作成後に作成したプロジェクトは、すべて自動的に組織リソースに属します。プロジェクトを組織に移行するには、API コンソール、Resource Manager API、または gcloud ツールを使用します。

コンソール


  1. 次のリンクから API コンソールの [プロジェクト] ページを開きます。

    [プロジェクト] ページを開く

  2. 移行するプロジェクトを選択し、[移行] をクリックします。

  3. [プロジェクト [project_name] を移行する] ポップアップ ボックスでプロジェクトの移行先となる組織を選択し、[移行] をクリックします。

gcloud


組織にプロジェクトを移行するには、以下のコマンドを実行します。

gcloud alpha projects move [PROJECT_ID] --organization [ORGANIZATION_ID]

各項目の意味は次のとおりです。

  • PROJECT_ID は、組織に移動するプロジェクトの ID です。
  • ORGANIZATION_ID は、プロジェクトを移動する対象となる組織の ID です。

API


Resource Manager API を使用し、プロジェクトの parent フィールドを組織の組織 ID に設定することで、そのプロジェクトを組織リソースの中に移動できます。プロジェクトを移動するには、プロジェクトのオーナーまたは編集者の役割とともに、組織の Project Creator の役割を持っている必要があります。

組織にプロジェクトを移行するには:

  • projects.get() メソッドを使用して project オブジェクトを取得します。
  • その parent フィールドに組織の組織 ID を設定します。
  • projects.update() メソッドを使用して project オブジェクトを更新します。

組織外にプロジェクトを移動したり、ある組織から別の組織にプロジェクトを移動したりすることはできません。つまり、 parent フィールドには一度設定すると不変になります。

次のコード スニペットは、上記の手順を示しています。

    project = crm.projects().get(projectId=flags.projectId).execute()
    project['parent'] = {
        'type': 'organization',
        'id': flags.organizationId
    }

    project = crm.projects().update(
    projectId=flags.projectId, body=project).execute()

組織 ID を取得する

組織 ID は、組織を一意に表す識別子であり、組織が作成されると自動的に作成されます。

組織 ID を確認するには、API コンソール、gcloud ツール、または Cloud Resource Manager API を使用します。

コンソール


API コンソールを使用して組織 ID を確認するには:

  1. 次のリンクから Google API コンソールに移動します。

    Google API コンソールに移動する

  2. ページの上部にある [組織] をクリックします。

  3. [組織] で組織を選択してから、[設定] を選択します。組織 ID が [設定] ページに表示されます。

gcloud


組織 ID を調べるには、次のコマンドを実行します。

gcloud alpha organizations list

このコマンドは、自分が属するすべての組織と、それらに対応する組織 ID をリスト表示します。

API


Resource Manager API を使用して組織 ID を確認するには、フィルタ domain:[company.com] を指定して organizations.search() メソッドを呼び出します。レスポンスには、組織 ID などの組織リソースのメタデータが含まれます。

組織管理者を追加する

ドメインに組織リソースが初めて作成されると、ドメインのメンバーが作成した Cloud プロジェクトは、すべて組織リソースに属します。この時点では、G Suite の特権管理者のみがデフォルトの組織レベルの IAM ポリシーを変更し、組織管理者の役割(およびその他の IAM の役割)を自分自身や他のユーザーに付与することができます。組織管理者が追加されると、G Suite 特権管理者に加え、追加された組織管理者も IAM ポリシーを変更できるようになります。

コンソール


ドメインに対して組織リソースが有効になったら、API コンソールを使用して組織管理者を追加できます。

組織管理者を追加するには:

  1. 次のリンクから Google API コンソールに移動します。

    Google API コンソールに移動する

  2. ページの上部にある [組織] をクリックします。

  3. [組織] で組織を選択してから、[IAM/権限] を選択します。[IAM] ページが表示されます。

  4. [メンバーを追加] をクリックします。メンバーのメールアドレスを入力してから、[組織の管理者] を選択し、[追加] をクリックします。

gcloud


gcloud コマンドを使用して組織管理者を追加するには:

  1. get-iam-policy コマンドを使用して組織の IAM ポリシーを取得し、そのポリシーを JSON ファイルに出力します。

    gcloud alpha organizations get-iam-policy [ORGANIZATION_ID] --format json >
    [FILENAME.json]
    
  2. JSON ファイルの内容は次のようになります。

    {
        "bindings": [
        {
            "members": [
                "user:testuser1@gcp-test.com"
            ],
            "role": "roles/editor"
        },
        {
            "members": [
                "user:admin@gcp-test.com",
            ],
            "role": "roles/resourcemanager.organizationAdmin"
        },
        {
            "members": [
                "user:testuser2@gcp-test.com"
            ],
            "role": "roles/resourcemanager.projectCreator"
        },
        ],
        "etag": "BwU1aRxWk30="
    }
    
  3. テキスト エディタで JSON ファイルを開き、組織管理者を定義する bindings 配列に新しいエントリを追加します。たとえば、anotheradmin@gcp-test.com を組織管理者にするには、上記の例を次のように変更します。

    {
        "bindings": [
        {
            "members": [
                "user:testuser1@gcp-test.com"
            ],
            "role": "roles/editor"
        },
        {
            "members": [
                "user:admin@gcp-test.com",
                "user:anotheradmin@gcp-test.com"
            ],
            "role": "roles/resourcemanager.organizationAdmin"
        },
        {
            "members": [
                "user:testuser20@gcp-test.com"
            ],
            "role": "roles/resourcemanager.projectCreator"
        },
        ],
        "etag": "BwU1aRxWk50="
    }
    
  4. 次のコマンドを実行し、組織のポリシーを更新します。

    gcloud alpha organizations set-iam-policy [ORGANIZATION_ID] [FILENAME.json]
    

API


Resource Manager API には、組織リソースの IAM ポリシーを設定できるようにする projects.setIamPolicy() メソッドが用意されています。

API を使用して組織管理者を追加するには:

  1. projects.getIamPolicy() を使用し、組織の既存の Cloud IAM ポリシーを取得します。

  2. 組織管理者向けに binding がすでに存在するかどうかを調べ、既存の組織管理者が存在するかどうかを確認してください。存在しない場合、空の binding を作成します。

  3. ユーザーが binding 内にすでに存在するかどうかを調べ、追加するユーザーがすでに組織管理者であるかどうかを確認してください。存在しない場合、binding にユーザーを追加します。

次のコード スニペットは、上記の手順を示しています。

    ...

    policy = crm.organizations().getIamPolicy(
        resource=flags.organizationId, body={}).execute()
    admin_binding = next(
        (binding
            for binding in policy['bindings']
            if binding['role'] ==
        'roles/resourcemanager.organizationAdmin'), None)

    # Add an empty Organization Admin binding, if not present
    if not admin_binding:
        admin_binding = {
            'role': 'roles/resourcemanager.organizationAdmin',
            'members': []
        }
    policy['bindings'].append(admin_binding)

    # Add new admin if necessary
    new_admin = 'user:' + flags.adminEmail
    if new_admin not in admin_binding['members']:
        admin_binding['members'].append(new_admin)
    policy = crm.organizations().setIamPolicy(
        resource=flags.organizationId,
        body={
            'resource': flags.organizationId,
            'policy': policy
        }).execute()

    ...

組織で新しいプロジェクトを作成する

コンソール


ドメインに対して組織リソースが有効になったら、API コンソールを使用して組織内でプロジェクトを作成することができます。

組織で新しいプロジェクトを作成するには:

  1. 次のリンクから Google API コンソールに移動します。

    Google API コンソールに移動する

  2. ページの上部にある [組織] から組織を選択します。

  3. ページ上部の [プロジェクトを選択] をクリックし、[プロジェクトを作成] をクリックします。

  4. [プロジェクト名] に、Test project と入力し、[作成] をクリックします。

API


組織内に新しいプロジェクトを作成するには、project作成し、その parent フィールドを組織の organizationId に設定します。

次のコード スニペットは、組織内でプロジェクトを作成する方法を示します。

...

project = crm.projects().create(
    body={
        'project_id': flags.projectId,
        'name': 'My New Project',
        'parent': {
            'type': 'organization',
            'id': flags.organizationId
         }
}).execute()

...

組織内のすべてのプロジェクトを表示する

コンソール


API コンソールを使用して、組織に含まれるすべてのプロジェクトを表示するには:

  1. 次のリンクから Google API コンソールに移動します。

    Google API コンソールに移動する

  2. ページの上部にある [組織] をクリックします。

  3. 組織を選択します。

  4. ページの上部にある [プロジェクト] をクリックし、[プロジェクトをさらに表示] をクリックします。組織に含まれるすべてのプロジェクトがページに表示されます。

[組織] で [組織なし] オプションを指定すると、次のプロジェクトがリスト表示されます。

  • まだ組織に属していないプロジェクト。
  • ユーザーがアクセスできるプロジェクトのうち、ユーザーがアクセスできない組織に属しているプロジェクト。

gcloud


組織に含まれるすべてのプロジェクトを表示するには、次のコマンドを実行します。

gcloud projects list --filter 'parent.id=[ORGANIZATION_ID] AND \
    parent.type=organization'

API


組織に含まれるすべてのプロジェクトを表示するには、次のコード スニペットのように projects.list() メソッドを使用します。

...

filter = 'parent.type:organization parent.id:%s' % flags.organizationId
projects = crm.projects().list(filter=filter).execute()

...

フィードバックを送信...

Google Cloud Resource Manager ドキュメント
Google Cloud Resource Manager ドキュメント