Google Cloud 추천자

이 문서에서는 Google CloudRecommender를 Google Security Operations와 구성하고 통합하는 데 도움이 되는 안내를 제공합니다.

기본 요건

통합을 구성하기 전에 모든 기본 요건 단계를 완료해야 합니다.

IAM 역할 만들기 및 구성

  1. Google Cloud 콘솔에서 IAM 역할 페이지로 이동합니다.

    IAM 역할로 이동

  2. 역할 만들기를 클릭하여 통합에 필요한 권한이 있는 커스텀 역할을 만듭니다.

  3. 새 커스텀 역할의 경우 제목, 설명, 고유 ID를 제공합니다.

  4. 역할 출시 단계정식 버전으로 설정합니다.

  5. 생성된 역할에 다음 권한을 추가합니다.

    • iam.roles.create
    • iam.roles.delete
    • iam.roles.get
    • iam.roles.list
    • iam.roles.undelete
    • iam.roles.update
    • iam.serviceAccounts.create
    • iam.serviceAccounts.delete
    • iam.serviceAccounts.disable
    • iam.serviceAccounts.enable
    • iam.serviceAccounts.get
    • iam.serviceAccounts.getIamPolicy
    • iam.serviceAccounts.list
    • iam.serviceAccounts.setIamPolicy
    • iam.serviceAccounts.undelete
    • iam.serviceAccounts.update
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
    • recommender.iamPolicyLateralMovementInsights.get
    • recommender.iamPolicyLateralMovementInsights.list
    • recommender.iamPolicyRecommendations.get
    • recommender.iamPolicyRecommendations.list
    • recommender.iamPolicyRecommendations.update
    • recommender.iamServiceAccountInsights.get
    • recommender.iamServiceAccountInsights.list
    • recommender.locations.get
    • recommender.locations.list
    • resourcemanager.folders.get
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
    • resourcemanager.organizations.get
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy
    • resourcemanager.projects.get
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.list
    • resourcemanager.projects.setIamPolicy
    • securitycenter.assets.list
    • securitycenter.findings.group
    • securitycenter.findings.list
    • securitycenter.findings.listFindingPropertyNames
    • securitycenter.findings.setMute
    • securitycenter.findings.setState
    • securitycenter.sources.get
    • securitycenter.sources.list
    • securitycenter.userinterfacemetadata.get
  6. 만들기를 클릭합니다.

서비스 계정 만들기

  1. 서비스 계정을 만들려면 서비스 계정 만들기 절차를 따르세요.

  2. 서비스 계정을 만든 후 JSON 파일로 다운로드합니다. 통합 매개변수를 구성할 때 다운로드한 JSON 파일의 콘텐츠를 제공해야 합니다.

Recommender를 Google Cloud Google SecOps와 통합

Google SecOps SOAR에서 통합을 구성하는 방법에 대한 자세한 내용은 통합 구성을 참고하세요.

통합 입력

통합을 구성하려면 다음 매개변수를 사용하세요.

매개변수
API Root 필수

Google Cloud 추천 서비스의 API 루트입니다.

기본값은 https://recommender.googleapis.com/v1/입니다.

Organization ID 선택사항

Google Cloud추천자 통합에 사용해야 하는 조직 ID입니다.

User's Service Account 필수

Google Cloud 추천자 서비스 계정의 콘텐츠입니다.

서비스 계정을 만들 때 다운로드한 서비스 계정 JSON 파일의 전체 콘텐츠를 제공해야 합니다.

Verify SSL 선택사항

선택하면 이 매개변수는 Google Cloud 추천 서버에 연결하는 SSL 인증서가 유효한지 확인합니다.

기본적으로 선택되어 있습니다.

작업

IAM 권장사항 적용

제공된 입력을 기반으로 IAM 권장사항을 적용합니다.

이 작업은 google.iam.policy.Recommender 추천에서만 작동합니다.

항목

이 작업은 항목에서 실행되지 않습니다.

작업 입력

작업을 구성하려면 다음 매개변수를 사용하세요.

매개변수
IAM Recommendations JSON 필수

추천의 JSON 결과입니다.

JSON 결과는 추천 목록 또는 추천 가져오기 작업에서 자리표시자로 제공될 수 있습니다.

작업 출력

작업 출력 유형
케이스 월 연결 해당 사항 없음
케이스 월 링크 해당 사항 없음
케이스 월 테이블 해당 사항 없음
보강 테이블 해당 사항 없음
항목 통계 해당 사항 없음
인사이트 해당 사항 없음
JSON 결과 사용 가능
OOTB 위젯 해당 사항 없음
스크립트 결과 사용 가능
스크립트 결과
스크립트 결과 이름
is_success True/False
JSON 결과
{
  "applied_recommendations": [
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/217d3019-bae5-4a52-9968-787fdd546a53",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 610
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/compute.instanceAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/compute.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/compute.admin",
          "addedRoles": [
            "roles/compute.instanceAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"892d57ee41baa03e\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    },
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 19
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "user:USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/storage.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/storage.admin",
          "addedRoles": [
            "roles/storage.objectAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"af7635ffeb512998\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    }
  ],
  "failed_recommendations": []
}
케이스 월

이 작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명
Successfully applied provided IAM recommendations. 작업이 완료되었습니다.
Successfully applied provided IAM recommendation, but some of the recommendations were not applied. 작업이 완료되었습니다.
No provided IAM recommendations were applied. 추천에 실패했습니다.
Error executing action ACTION_NAME. 작업에서 오류가 반환되었습니다.

추천 받기

Google Cloud 추천 서비스에서 특정 추천을 가져옵니다.

항목

이 작업은 항목에서 실행되지 않습니다.

작업 입력

작업을 구성하려면 다음 매개변수를 사용하세요.

매개변수
Recommendation name 필수

반환할 추천 이름을 지정합니다.

작업은 여러 값을 쉼표로 구분된 문자열로 허용합니다.

예상 입력의 예:

    projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7
    

작업 출력

작업 출력 유형
케이스 월 연결 해당 사항 없음
케이스 월 링크 해당 사항 없음
케이스 월 테이블 해당 사항 없음
보강 테이블 해당 사항 없음
항목 통계 해당 사항 없음
인사이트 해당 사항 없음
JSON 결과 사용 가능
OOTB 위젯 해당 사항 없음
스크립트 결과 사용 가능
스크립트 결과
스크립트 결과 이름
is_success True/False
JSON 결과
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
케이스 월

이 작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명
Successfully found recommendation in the Google Cloud Recommender service. 작업이 완료되었습니다.
No recommendations were found in the Google Cloud Recommender service. 데이터를 사용할 수 없습니다.
Error executing action ACTION_NAME 작업에서 오류가 반환되었습니다.

권장사항 나열

Google Cloud 추천자 서비스에서 사용 가능한 추천을 나열합니다.

항목

이 작업은 항목에서 실행되지 않습니다.

작업 입력

작업을 구성하려면 다음 매개변수를 사용하세요.

매개변수
Recommendation Filter 선택사항

추천을 가져올 필터를 지정합니다.

매개변수는 다음 형식 중 하나의 문자열이어야 합니다.

  • PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID
  • //cloudresourcemanager.googleapis.com/ PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID

값을 제공하지 않으면 작업에서 구성된 서비스 계정에서 프로젝트 ID를 가져옵니다.

Recommendation Location 필수

추천을 가져올 Google Cloud 위치를 지정합니다.

기본값은 global입니다.

Recommendation State 선택사항

반환할 추천 상태를 지정합니다.

기본값은 Not Specified입니다.

가능한 값은 다음과 같습니다.

  • Not Specified
  • Active
  • Dismissed
Recommendation Priority 선택사항

반환할 추천의 우선순위를 지정합니다. 여러 값을 쉼표로 구분된 문자열로 지정할 수 있습니다.

Recommender Subtype 선택사항

반환된 추천자 하위 유형을 지정합니다.

기본값은 Not Specified입니다.

가능한 값은 다음과 같습니다.

  • Not Specified
  • REMOVE_ROLE
  • REPLACE_ROLE
Max Records To Return 선택사항

반환할 레코드 수를 지정합니다. 값이 제공되지 않으면 작업에서 기본적으로 50개의 레코드를 반환합니다.

작업 출력

작업 출력 유형
케이스 월 연결 해당 사항 없음
케이스 월 링크 해당 사항 없음
케이스 월 테이블 사용 가능
보강 테이블 해당 사항 없음
항목 통계 해당 사항 없음
인사이트 해당 사항 없음
JSON 결과 사용 가능
OOTB 위젯 해당 사항 없음
스크립트 결과 사용 가능
스크립트 결과
스크립트 결과 이름
is_success True/False
JSON 결과
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/i/locations/global/insightTypes/"
      }
    ],
    "priority": "P4"
  },
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 5
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                "/iamPolicy/bindings/*/role": "roles/chroniclesm.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects",
        "member": "user:USER_ID@example.com",
        "removedRole": "roles/chroniclesm.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects"
      }
    ],
    "priority": "P4"
  }
]
케이스 월

이 작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명
Successfully found recommendations for the provided criteria in the Google Cloud Recommender service. 작업이 완료되었습니다.
No recommendations were found for the provided criteria in the Google Cloud Recommender service. 데이터가 없습니다.
Error executing action ACTION_NAME. 작업에서 오류가 반환되었습니다.

이 작업은 다음 케이스 월 표를 제공합니다.

사용 가능한 추천
  • 이름
  • 설명
  • 카테고리
  • 추천 하위 유형
  • 우선순위
  • 최종 새로고침 시간

Google SecOps Marketplace 탭의 통합 구성 페이지에서 제공된 매개변수를 사용하여 Google Cloud 추천 서비스에 대한 연결을 테스트합니다.

항목

이 작업은 항목에서 실행되지 않습니다.

작업 입력

해당 사항 없음

작업 출력

작업 출력 유형
케이스 월 연결 해당 사항 없음
케이스 월 링크 해당 사항 없음
케이스 월 테이블 해당 사항 없음
보강 테이블 해당 사항 없음
항목 통계 해당 사항 없음
인사이트 해당 사항 없음
JSON 결과 해당 사항 없음
OOTB 위젯 해당 사항 없음
스크립트 결과 사용 가능
스크립트 결과
스크립트 결과 이름
is_success True/False
케이스 월

이 작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명
Successfully connected to the Google Cloud Recommender service with the provided connection parameters! 작업이 완료되었습니다.
Failed to connect to the Google Cloud Recommender service! 작업에서 오류가 반환되었습니다.

추천 업데이트

Google Cloud 추천자 서비스에서 추천을 업데이트합니다.

항목

이 작업은 항목에서 실행되지 않습니다.

작업 입력

다음 매개변수를 사용하여 작업을 구성합니다.

매개변수
Recommendation name 필수

업데이트할 추천 이름을 지정합니다.

작업은 여러 값을 쉼표로 구분된 문자열로 허용합니다.

예상 입력의 예: projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7

Recommendation State 선택사항

변경할 추천의 상태를 지정합니다.

기본값은 Not Specified입니다.

가능한 값은 다음과 같습니다.

  • Not Specified
  • Claimed
  • Dismissed
Recommendation Result 선택사항

변경할 추천 결과를 지정합니다.

기본값은 Not Specified입니다.

가능한 값은 다음과 같습니다.

  • Not Specified
  • Failed
  • Succeeded

작업 출력

작업 출력 유형
케이스 월 연결 해당 사항 없음
케이스 월 링크 해당 사항 없음
케이스 월 테이블 해당 사항 없음
보강 테이블 해당 사항 없음
항목 통계 해당 사항 없음
인사이트 해당 사항 없음
JSON 결과 사용 가능
OOTB 위젯 해당 사항 없음
스크립트 결과 사용 가능
스크립트 결과
스크립트 결과 이름
is_success True/False
JSON 결과
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
케이스 월

이 작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명
Successfully updated recommendation in the Google Cloud Recommender service. 작업이 완료되었습니다.
No recommendations were found in the Google Cloud Recommender service. 데이터를 사용할 수 없습니다.
Error executing action ACTION_NAME 작업에서 오류가 반환되었습니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.