הגבלת פעולות במשאבי GKE באמצעות מדיניות ארגונית בהתאמה אישית

בדף הזה מוסבר איך להשתמש באילוצים מותאמים אישית של שירות מדיניות הארגון כדי להגביל פעולות ספציפיות במשאבים הבאים של Google Cloud :

  • container.googleapis.com/Cluster
  • container.googleapis.com/NodePool

מידע נוסף על מדיניות הארגון בהתאמה אישית

מידע על כללי מדיניות ואילוצים של הארגון

שירות Google Cloud מדיניות הארגון מאפשר לכם לקבל שליטה מרוכזת ופרוגרמטית על המשאבים של הארגון. אדמינים של מדיניות הארגון יכולים להגדיר מדיניות ארגונית, שהיא קבוצה של הגבלות שנקראות אילוצים. האילוצים האלה חלים על משאביGoogle Cloud ועל הצאצאים של המשאבים האלה בGoogle Cloud היררכיית המשאבים. אפשר לאכוף את מדיניות הארגון ברמת הארגון, התיקייה או הפרויקט.

מדיניות הארגון מספקת אילוצים מנוהלים מובְנים לשירותים שונים של Google Cloud . עם זאת, אם אתם רוצים שליטה מפורטת יותר בהתאמה אישית על השדות הספציפיים שמוגבלים במדיניות הארגון, אתם יכולים גם ליצור אילוצים בהתאמה אישית ולהשתמש בהם במדיניות הארגון.

העברת מדיניות בירושה

כברירת מחדל, מדיניות הארגון עוברת בירושה לצאצאים של המשאבים שבהם אתם אוכפים את המדיניות. לדוגמה, אם אוכפים מדיניות בתיקייה, Google Cloud אוכף את המדיניות בכל הפרויקטים שבתיקייה. במאמר כללי הערכה של היררכיה מוסבר בהרחבה על ההתנהגות הזו ואיך לשנות אותה.

מגבלות

המגבלות הבאות חלות על שימוש בשירות מדיניות הארגון עם GKE:

  • אין תמיכה בשדות הבאים שהם רק לפלט:

    • projects.locations.clusters.masterAuth.clientKey
    • projects.locations.clusters.masterAuth.password
  • אי אפשר לאכוף באופן מותנה את מדיניות הארגון על סמך התגים שמצורפים לאשכולות GKE.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. חשוב לוודא שאתם יודעים מהו מזהה הארגון שלכם.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לשימוש במדיניות הארגון ב-GKE, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

משאבים נתמכים ב-GKE

בטבלה הבאה מפורטים המשאבים של GKE שאפשר להפנות אליהם באילוצים בהתאמה אישית.

משאב שדה
container.googleapis.com/Cluster resource.addonsConfig.cloudRunConfig.disabled
resource.addonsConfig.cloudRunConfig.loadBalancerType
resource.addonsConfig.configConnectorConfig.enabled
resource.addonsConfig.dnsCacheConfig.enabled
resource.addonsConfig.gcePersistentDiskCsiDriverConfig.enabled
resource.addonsConfig.gcpFilestoreCsiDriverConfig.enabled
resource.addonsConfig.gcsFuseCsiDriverConfig.enabled
resource.addonsConfig.gkeBackupAgentConfig.enabled
resource.addonsConfig.highScaleCheckpointingConfig.enabled
resource.addonsConfig.horizontalPodAutoscaling.disabled
resource.addonsConfig.httpLoadBalancing.disabled
resource.addonsConfig.kubernetesDashboard.disabled
resource.addonsConfig.networkPolicyConfig.disabled
resource.addonsConfig.parallelstoreCsiDriverConfig.enabled
resource.addonsConfig.rayOperatorConfig.enabled
resource.addonsConfig.rayOperatorConfig.rayClusterLoggingConfig.enabled
resource.addonsConfig.rayOperatorConfig.rayClusterMonitoringConfig.enabled
resource.addonsConfig.statefulHAConfig.enabled
resource.addonsConfig.wizSensorConfig.enabled
resource.alphaClusterFeatureGates
resource.anonymousAuthenticationConfig.mode
resource.authenticatorGroupsConfig.enabled
resource.authenticatorGroupsConfig.securityGroup
resource.autopilot.enabled
resource.autopilot.privilegedAdmissionConfig.allowlistPaths
resource.autopilot.workloadPolicyConfig.allowNetAdmin
resource.autopilot.workloadPolicyConfig.autopilotCompatibilityAuditingEnabled
resource.autoscaling.autoprovisioningLocations
resource.autoscaling.autoprovisioningNodePoolDefaults.bootDiskKmsKey
resource.autoscaling.autoprovisioningNodePoolDefaults.diskSizeGb
resource.autoscaling.autoprovisioningNodePoolDefaults.diskType
resource.autoscaling.autoprovisioningNodePoolDefaults.imageType
resource.autoscaling.autoprovisioningNodePoolDefaults.insecureKubeletReadonlyPortEnabled
resource.autoscaling.autoprovisioningNodePoolDefaults.management.autoRepair
resource.autoscaling.autoprovisioningNodePoolDefaults.management.autoUpgrade
resource.autoscaling.autoprovisioningNodePoolDefaults.minCpuPlatform
resource.autoscaling.autoprovisioningNodePoolDefaults.oauthScopes
resource.autoscaling.autoprovisioningNodePoolDefaults.serviceAccount
resource.autoscaling.autoprovisioningNodePoolDefaults.shieldedInstanceConfig.enableIntegrityMonitoring
resource.autoscaling.autoprovisioningNodePoolDefaults.shieldedInstanceConfig.enableSecureBoot
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.blueGreenSettings.nodePoolSoakDuration
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.blueGreenSettings.standardRolloutPolicy.batchNodeCount
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.blueGreenSettings.standardRolloutPolicy.batchPercentage
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.blueGreenSettings.standardRolloutPolicy.batchSoakDuration
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.maxSurge
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.maxUnavailable
resource.autoscaling.autoprovisioningNodePoolDefaults.upgradeSettings.strategy
resource.autoscaling.autoscalingProfile
resource.autoscaling.enableNodeAutoprovisioning
resource.autoscaling.resourceLimits.maximum
resource.autoscaling.resourceLimits.minimum
resource.autoscaling.resourceLimits.resourceType
resource.binaryAuthorization.enabled
resource.binaryAuthorization.evaluationMode
resource.binaryAuthorization.policyBindings.name
resource.clusterIpv4Cidr
resource.compliancePostureConfig.complianceStandards.standard
resource.compliancePostureConfig.mode
resource.conditions.code
resource.conditions.message
resource.confidentialNodes.confidentialInstanceType
resource.confidentialNodes.enabled
resource.controlPlaneEgress.mode
resource.controlPlaneEndpointsConfig.dnsEndpointConfig.allowExternalTraffic
resource.controlPlaneEndpointsConfig.dnsEndpointConfig.endpoint
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.authorizedNetworksConfig.cidrBlocks.cidrBlock
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.authorizedNetworksConfig.cidrBlocks.displayName
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.authorizedNetworksConfig.enabled
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.authorizedNetworksConfig.gcpPublicCidrsAccessEnabled
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.authorizedNetworksConfig.privateEndpointEnforcementEnabled
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.enabled
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.enablePublicEndpoint
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.globalAccess
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.privateEndpoint
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.privateEndpointSubnetwork
resource.controlPlaneEndpointsConfig.ipEndpointsConfig.publicEndpoint
resource.costManagementConfig.enabled
resource.currentNodeCount
resource.databaseEncryption.keyName
resource.databaseEncryption.state
resource.defaultMaxPodsConstraint.maxPodsPerNode
resource.description
resource.enableK8sBetaApis.enabledApis
resource.enableKubernetesAlpha
resource.enterpriseConfig.clusterTier
resource.fleet.membership
resource.fleet.preRegistered
resource.fleet.project
resource.identityServiceConfig.enabled
resource.initialClusterVersion
resource.initialNodeCount
resource.ipAllocationPolicy.clusterIpv4Cidr
resource.ipAllocationPolicy.clusterIpv4CidrBlock
resource.ipAllocationPolicy.clusterSecondaryRangeName
resource.ipAllocationPolicy.createSubnetwork
resource.ipAllocationPolicy.ipv6AccessType
resource.ipAllocationPolicy.nodeIpv4Cidr
resource.ipAllocationPolicy.nodeIpv4CidrBlock
resource.ipAllocationPolicy.podCidrOverprovisionConfig.disable
resource.ipAllocationPolicy.servicesIpv4Cidr
resource.ipAllocationPolicy.servicesIpv4CidrBlock
resource.ipAllocationPolicy.servicesSecondaryRangeName
resource.ipAllocationPolicy.stackType
resource.ipAllocationPolicy.subnetworkName
resource.ipAllocationPolicy.tpuIpv4CidrBlock
resource.ipAllocationPolicy.useIpAliases
resource.ipAllocationPolicy.useRoutes
resource.labelFingerprint
resource.legacyAbac.enabled
resource.location
resource.locations
resource.loggingConfig.componentConfig.enableComponents
resource.loggingService
resource.maintenancePolicy.resourceVersion
resource.maintenancePolicy.window.dailyMaintenanceWindow.startTime
resource.maintenancePolicy.window.maintenanceExclusions[*].endTime
resource.maintenancePolicy.window.maintenanceExclusions[*].maintenanceExclusionOptions.scope
resource.maintenancePolicy.window.maintenanceExclusions[*].startTime
resource.maintenancePolicy.window.recurringWindow.recurrence
resource.maintenancePolicy.window.recurringWindow.window.endTime
resource.maintenancePolicy.window.recurringWindow.window.maintenanceExclusionOptions.scope
resource.maintenancePolicy.window.recurringWindow.window.startTime
resource.masterAuth.clientCertificateConfig.issueClientCertificate
resource.masterAuth.username
resource.masterAuthorizedNetworksConfig.cidrBlocks.cidrBlock
resource.masterAuthorizedNetworksConfig.cidrBlocks.displayName
resource.masterAuthorizedNetworksConfig.enabled
resource.masterAuthorizedNetworksConfig.gcpPublicCidrsAccessEnabled
resource.masterAuthorizedNetworksConfig.privateEndpointEnforcementEnabled
resource.meshCertificates.enableCertificates
resource.monitoringConfig.advancedDatapathObservabilityConfig.enableMetrics
resource.monitoringConfig.advancedDatapathObservabilityConfig.enableRelay
resource.monitoringConfig.advancedDatapathObservabilityConfig.relayMode
resource.monitoringConfig.componentConfig.enableComponents
resource.monitoringConfig.managedPrometheusConfig.autoMonitoringConfig.scope
resource.monitoringConfig.managedPrometheusConfig.enabled
resource.monitoringService
resource.name
resource.network
resource.networkConfig.datapathProvider
resource.networkConfig.defaultEnablePrivateNodes
resource.networkConfig.defaultSnatStatus.disabled
resource.networkConfig.disableL4LbFirewallReconciliation
resource.networkConfig.dnsConfig.additiveVpcScopeDnsDomain
resource.networkConfig.dnsConfig.clusterDns
resource.networkConfig.dnsConfig.clusterDnsDomain
resource.networkConfig.dnsConfig.clusterDnsScope
resource.networkConfig.enableCiliumClusterwideNetworkPolicy
resource.networkConfig.enableFqdnNetworkPolicy
resource.networkConfig.enableIntraNodeVisibility
resource.networkConfig.enableL4ilbSubsetting
resource.networkConfig.enableMultiNetworking
resource.networkConfig.gatewayApiConfig.channel
resource.networkConfig.inTransitEncryptionConfig
resource.networkConfig.networkPerformanceConfig.totalEgressBandwidthTier
resource.networkConfig.privateIpv6GoogleAccess
resource.networkConfig.serviceExternalIpsConfig.enabled
resource.networkPolicy.enabled
resource.networkPolicy.provider
resource.nodeConfig.accelerators.acceleratorCount
resource.nodeConfig.accelerators.acceleratorType
resource.nodeConfig.accelerators.gpuDriverInstallationConfig.gpuDriverVersion
resource.nodeConfig.accelerators.gpuPartitionSize
resource.nodeConfig.accelerators.gpuSharingConfig.gpuSharingStrategy
resource.nodeConfig.accelerators.gpuSharingConfig.maxSharedClientsPerGpu
resource.nodeConfig.advancedMachineFeatures.enableNestedVirtualization
resource.nodeConfig.advancedMachineFeatures.performanceMonitoringUnit
resource.nodeConfig.advancedMachineFeatures.threadsPerCore
resource.nodeConfig.bootDiskKmsKey
resource.nodeConfig.confidentialNodes.confidentialInstanceType
resource.nodeConfig.confidentialNodes.enabled
resource.nodeConfig.diskSizeGb
resource.nodeConfig.diskType
resource.nodeConfig.ephemeralStorageLocalSsdConfig.dataCacheCount
resource.nodeConfig.ephemeralStorageLocalSsdConfig.localSsdCount
resource.nodeConfig.fastSocket.enabled
resource.nodeConfig.flexStart
resource.nodeConfig.gcfsConfig.enabled
resource.nodeConfig.gvnic.enabled
resource.nodeConfig.imageType
resource.nodeConfig.kubeletConfig.allowedUnsafeSysctls
resource.nodeConfig.kubeletConfig.containerLogMaxFiles
resource.nodeConfig.kubeletConfig.containerLogMaxSize
resource.nodeConfig.kubeletConfig.cpuCfsQuota
resource.nodeConfig.kubeletConfig.cpuCfsQuotaPeriod
resource.nodeConfig.kubeletConfig.cpuManagerPolicy
resource.nodeConfig.kubeletConfig.imageGcHighThresholdPercent
resource.nodeConfig.kubeletConfig.imageGcLowThresholdPercent
resource.nodeConfig.kubeletConfig.imageMaximumGcAge
resource.nodeConfig.kubeletConfig.imageMinimumGcAge
resource.nodeConfig.kubeletConfig.insecureKubeletReadonlyPortEnabled
resource.nodeConfig.kubeletConfig.memoryManager.policy
resource.nodeConfig.kubeletConfig.podPidsLimit
resource.nodeConfig.kubeletConfig.topologyManager.policy
resource.nodeConfig.kubeletConfig.topologyManager.scope
resource.nodeConfig.labels
resource.nodeConfig.linuxNodeConfig.cgroupMode
resource.nodeConfig.linuxNodeConfig.hugepages.hugepageSize1g
resource.nodeConfig.linuxNodeConfig.hugepages.hugepageSize2m
resource.nodeConfig.linuxNodeConfig.sysctls
resource.nodeConfig.localNvmeSsdBlockConfig.localSsdCount
resource.nodeConfig.localSsdCount
resource.nodeConfig.localSsdEncryptionMode
resource.nodeConfig.loggingConfig.variantConfig.variant
resource.nodeConfig.machineType
resource.nodeConfig.maxRunDuration
resource.nodeConfig.metadata
resource.nodeConfig.minCpuPlatform
resource.nodeConfig.nodeGroup
resource.nodeConfig.oauthScopes
resource.nodeConfig.preemptible
resource.nodeConfig.reservationAffinity.consumeReservationType
resource.nodeConfig.reservationAffinity.key
resource.nodeConfig.reservationAffinity.values
resource.nodeConfig.resourceLabels
resource.nodeConfig.resourceManagerTags.tags
resource.nodeConfig.sandboxConfig.type
resource.nodeConfig.secondaryBootDisks.diskImage
resource.nodeConfig.secondaryBootDisks.mode
resource.nodeConfig.serviceAccount
resource.nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoring
resource.nodeConfig.shieldedInstanceConfig.enableSecureBoot
resource.nodeConfig.soleTenantConfig.nodeAffinities.key
resource.nodeConfig.soleTenantConfig.nodeAffinities.operator
resource.nodeConfig.soleTenantConfig.nodeAffinities.values
resource.nodeConfig.spot
resource.nodeConfig.storagePools
resource.nodeConfig.tags
resource.nodeConfig.taints.effect
resource.nodeConfig.taints.key
resource.nodeConfig.taints.value
resource.nodeConfig.windowsNodeConfig.osVersion
resource.nodeConfig.workloadMetadataConfig.mode
resource.nodePoolAutoConfig.networkTags.tags
resource.nodePoolAutoConfig.nodeKubeletConfig.allowedUnsafeSysctls
resource.nodePoolAutoConfig.nodeKubeletConfig.containerLogMaxFiles
resource.nodePoolAutoConfig.nodeKubeletConfig.containerLogMaxSize
resource.nodePoolAutoConfig.nodeKubeletConfig.cpuCfsQuota
resource.nodePoolAutoConfig.nodeKubeletConfig.cpuCfsQuotaPeriod
resource.nodePoolAutoConfig.nodeKubeletConfig.cpuManagerPolicy
resource.nodePoolAutoConfig.nodeKubeletConfig.imageGcHighThresholdPercent
resource.nodePoolAutoConfig.nodeKubeletConfig.imageGcLowThresholdPercent
resource.nodePoolAutoConfig.nodeKubeletConfig.imageMaximumGcAge
resource.nodePoolAutoConfig.nodeKubeletConfig.imageMinimumGcAge
resource.nodePoolAutoConfig.nodeKubeletConfig.insecureKubeletReadonlyPortEnabled
resource.nodePoolAutoConfig.nodeKubeletConfig.memoryManager.policy
resource.nodePoolAutoConfig.nodeKubeletConfig.podPidsLimit
resource.nodePoolAutoConfig.nodeKubeletConfig.topologyManager.policy
resource.nodePoolAutoConfig.nodeKubeletConfig.topologyManager.scope
resource.nodePoolDefaults.nodeConfigDefaults.gcfsConfig.enabled
resource.nodePoolDefaults.nodeConfigDefaults.loggingConfig.variantConfig.variant
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.allowedUnsafeSysctls
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.containerLogMaxFiles
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.containerLogMaxSize
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.cpuCfsQuota
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.cpuCfsQuotaPeriod
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.cpuManagerPolicy
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.imageGcHighThresholdPercent
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.imageGcLowThresholdPercent
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.imageMaximumGcAge
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.imageMinimumGcAge
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.insecureKubeletReadonlyPortEnabled
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.memoryManager.policy
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.podPidsLimit
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.topologyManager.policy
resource.nodePoolDefaults.nodeConfigDefaults.nodeKubeletConfig.topologyManager.scope
resource.notificationConfig.pubsub.enabled
resource.notificationConfig.pubsub.filter.eventType
resource.notificationConfig.pubsub.topic
resource.podAutoscaling.hpaProfile
resource.privateClusterConfig.enablePrivateEndpoint
resource.privateClusterConfig.enablePrivateNodes
resource.privateClusterConfig.masterGlobalAccessConfig.enabled
resource.privateClusterConfig.masterIpv4CidrBlock
resource.privateClusterConfig.privateEndpointSubnetwork
resource.rbacBindingConfig.enableInsecureBindingSystemAuthenticated
resource.rbacBindingConfig.enableInsecureBindingSystemUnauthenticated
resource.releaseChannel.channel
resource.resourceLabels
resource.resourceUsageExportConfig.bigqueryDestination.datasetId
resource.resourceUsageExportConfig.consumptionMeteringConfig.enabled
resource.resourceUsageExportConfig.enableNetworkEgressMetering
resource.secretManagerConfig.enabled
resource.securityPostureConfig.mode
resource.securityPostureConfig.vulnerabilityMode
resource.shieldedNodes.enabled
resource.subnetwork
resource.userManagedKeysConfig.aggregationCa
resource.userManagedKeysConfig.clusterCa
resource.userManagedKeysConfig.controlPlaneDiskEncryptionKey
resource.userManagedKeysConfig.etcdApiCa
resource.userManagedKeysConfig.etcdPeerCa
resource.userManagedKeysConfig.gkeopsEtcdBackupEncryptionKey
resource.userManagedKeysConfig.serviceAccountSigningKeys
resource.userManagedKeysConfig.serviceAccountVerificationKeys
resource.verticalPodAutoscaling.enabled
resource.workloadIdentityConfig.workloadPool
resource.zone
container.googleapis.com/NodePool resource.autopilotConfig.enabled
resource.autoscaling.autoprovisioned
resource.autoscaling.enabled
resource.autoscaling.locationPolicy
resource.autoscaling.maxNodeCount
resource.autoscaling.minNodeCount
resource.autoscaling.totalMaxNodeCount
resource.autoscaling.totalMinNodeCount
resource.bestEffortProvisioning.enabled
resource.bestEffortProvisioning.minProvisionNodes
resource.conditions.code
resource.conditions.message
resource.config.accelerators.acceleratorCount
resource.config.accelerators.acceleratorType
resource.config.accelerators.gpuDriverInstallationConfig.gpuDriverVersion
resource.config.accelerators.gpuPartitionSize
resource.config.accelerators.gpuSharingConfig.gpuSharingStrategy
resource.config.accelerators.gpuSharingConfig.maxSharedClientsPerGpu
resource.config.advancedMachineFeatures.enableNestedVirtualization
resource.config.advancedMachineFeatures.performanceMonitoringUnit
resource.config.advancedMachineFeatures.threadsPerCore
resource.config.bootDiskKmsKey
resource.config.confidentialNodes.confidentialInstanceType
resource.config.confidentialNodes.enabled
resource.config.diskSizeGb
resource.config.diskType
resource.config.ephemeralStorageLocalSsdConfig.dataCacheCount
resource.config.ephemeralStorageLocalSsdConfig.localSsdCount
resource.config.fastSocket.enabled
resource.config.flexStart
resource.config.gcfsConfig.enabled
resource.config.gvnic.enabled
resource.config.imageType
resource.config.kubeletConfig.allowedUnsafeSysctls
resource.config.kubeletConfig.containerLogMaxFiles
resource.config.kubeletConfig.containerLogMaxSize
resource.config.kubeletConfig.cpuCfsQuota
resource.config.kubeletConfig.cpuCfsQuotaPeriod
resource.config.kubeletConfig.cpuManagerPolicy
resource.config.kubeletConfig.imageGcHighThresholdPercent
resource.config.kubeletConfig.imageGcLowThresholdPercent
resource.config.kubeletConfig.imageMaximumGcAge
resource.config.kubeletConfig.imageMinimumGcAge
resource.config.kubeletConfig.insecureKubeletReadonlyPortEnabled
resource.config.kubeletConfig.memoryManager.policy
resource.config.kubeletConfig.podPidsLimit
resource.config.kubeletConfig.topologyManager.policy
resource.config.kubeletConfig.topologyManager.scope
resource.config.labels
resource.config.linuxNodeConfig.cgroupMode
resource.config.linuxNodeConfig.hugepages.hugepageSize1g
resource.config.linuxNodeConfig.hugepages.hugepageSize2m
resource.config.linuxNodeConfig.sysctls
resource.config.localNvmeSsdBlockConfig.localSsdCount
resource.config.localSsdCount
resource.config.localSsdEncryptionMode
resource.config.loggingConfig.variantConfig.variant
resource.config.machineType
resource.config.maxRunDuration
resource.config.metadata
resource.config.minCpuPlatform
resource.config.nodeGroup
resource.config.oauthScopes
resource.config.preemptible
resource.config.reservationAffinity.consumeReservationType
resource.config.reservationAffinity.key
resource.config.reservationAffinity.values
resource.config.resourceLabels
resource.config.resourceManagerTags.tags
resource.config.sandboxConfig.type
resource.config.secondaryBootDisks.diskImage
resource.config.secondaryBootDisks.mode
resource.config.serviceAccount
resource.config.shieldedInstanceConfig.enableIntegrityMonitoring
resource.config.shieldedInstanceConfig.enableSecureBoot
resource.config.soleTenantConfig.nodeAffinities.key
resource.config.soleTenantConfig.nodeAffinities.operator
resource.config.soleTenantConfig.nodeAffinities.values
resource.config.spot
resource.config.storagePools
resource.config.tags
resource.config.taints.effect
resource.config.taints.key
resource.config.taints.value
resource.config.windowsNodeConfig.osVersion
resource.config.workloadMetadataConfig.mode
resource.initialNodeCount
resource.locations
resource.management.autoRepair
resource.management.autoUpgrade
resource.maxPodsConstraint.maxPodsPerNode
resource.name
resource.networkConfig.additionalNodeNetworkConfigs.network
resource.networkConfig.additionalNodeNetworkConfigs.subnetwork
resource.networkConfig.additionalPodNetworkConfigs.networkAttachment
resource.networkConfig.createPodRange
resource.networkConfig.enablePrivateNodes
resource.networkConfig.networkPerformanceConfig.totalEgressBandwidthTier
resource.networkConfig.podIpv4CidrBlock
resource.networkConfig.podRange
resource.placementPolicy.policyName
resource.placementPolicy.tpuTopology
resource.placementPolicy.type
resource.queuedProvisioning.enabled
resource.upgradeSettings.blueGreenSettings.nodePoolSoakDuration
resource.upgradeSettings.blueGreenSettings.standardRolloutPolicy.batchNodeCount
resource.upgradeSettings.blueGreenSettings.standardRolloutPolicy.batchPercentage
resource.upgradeSettings.blueGreenSettings.standardRolloutPolicy.batchSoakDuration
resource.upgradeSettings.maxSurge
resource.upgradeSettings.maxUnavailable
resource.upgradeSettings.strategy
resource.version

הגדרת אילוץ בהתאמה אישית

אילוץ בהתאמה אישית מוגדר בקובץ YAML לפי המשאבים, השיטות, התנאים והפעולות שנתמכים על ידי השירות שבו אתם אוכפים את מדיניות הארגון. התנאים של האילוצים המותאמים אישית מוגדרים באמצעות Common Expression Language (CEL). בקטע בנושא CEL במאמר יצירה וניהול של אילוצים בהתאמה אישית מוסבר איך ליצור תנאים באילוצים בהתאמה אישית באמצעות CEL.

המסוף

כדי ליצור אילוץ בהתאמה אישית:

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    כניסה לדף Organization policies

  2. בתפריט לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
  3. לוחצים על Custom constraint.
  4. בתיבה Display name, מזינים שם לאילוץ שיהיה קריא לאנשים. השם הזה מופיע בהודעות שגיאה ואפשר להשתמש בו לזיהוי ולניפוי באגים. אל תשתמשו בפרטים אישיים מזהים (PII) או במידע אישי רגיש בשמות לתצוגה, כי השם הזה עלול להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 200 תווים.
  5. בתיבה Constraint ID, מזינים את המזהה שרוצים לתת לאילוץ החדש בהתאמה אישית. אילוץ בהתאמה אישית יכול להכיל רק אותיות (כולל אותיות רישיות וקטנות) או מספרים, לדוגמה custom.enableGkeAutopilot. השדה הזה יכול להכיל עד 70 תווים, לא כולל הקידומת (custom.), לדוגמה, organizations/123456789/customConstraints/custom. אל תכללו פרטים אישיים מזהים או מידע אישי רגיש במזהה האילוץ, כי הם עלולים להיחשף בהודעות שגיאה.
  6. בתיבה Description, מזינים תיאור של האילוץ שקריא לאנשים. התיאור הזה משמש כהודעת שגיאה כשמתרחשת הפרה של המדיניות. ציינו פרטים על הסיבה להפרת המדיניות ואיך לפתור את הבעיה. אל תכללו פרטים אישיים מזהים או מידע אישי רגיש בתיאור, כי הם עלולים להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 2,000 תווים.
  7. בתיבה Resource type, בוחרים את השם של Google Cloud משאב REST שמכיל את האובייקט והשדה שרוצים להגביל – לדוגמה, container.googleapis.com/NodePool. רוב סוגי המשאבים תומכים בעד 20 אילוצים בהתאמה אישית. אם תנסו ליצור יותר אילוצים בהתאמה אישית, הפעולה תיכשל.
  8. בקטע Enforcement method, בוחרים אם לאכוף את האילוץ על שיטת REST CREATE או על השיטות CREATE ו-UPDATE. אם אוכפים את האילוץ באמצעות השיטה UPDATE במשאב שמפר את האילוץ, מדיניות הארגון חוסמת שינויים במשאב הזה, אלא אם השינוי פותר את ההפרה.
  9. כדי לראות את השיטות הנתמכות לכל שירות, מחפשים את השירות בקטע שירותים שתומכים באילוצים מותאמים אישית.

  10. כדי להגדיר תנאי, לוחצים על עריכת התנאי.
    1. בחלונית Add condition, יוצרים תנאי CEL שמתייחס למשאב שירות נתמך, למשל, resource.management.autoUpgrade == false. השדה הזה יכול לכלול עד 1,000 תווים. למידע נוסף על השימוש ב-CEL, ראו Common Expression Language. למידע נוסף על משאבי השירות שאפשר להשתמש בהם באילוצים בהתאמה אישית, קראו את המאמר שירותים שנתמכים באילוצים בהתאמה אישית.
    2. לוחצים על Save.
  11. בקטע Action, בוחרים אם לאשר או לדחות את השיטה שנבדקה אם התנאי מתקיים.
  12. פעולת הדחייה חוסמת את הפעולה ליצירה או לעדכון של המשאב אם התנאי מתקיים.

    פעולת ההרשאה מאפשרת ליצור או לעדכן את המשאב רק אם התנאי מתקיים. כל מקרה אחר, מלבד אלה שרשומים במפורש בתנאי, נחסם.

  13. לוחצים על Create constraint.
  14. אחרי שמזינים ערך בכל שדה, הגדרת ה-YAML המקבילה לאילוץ המותאם אישית הזה מופיעה בצד שמאל.

gcloud

  1. כדי ליצור אילוץ בהתאמה אישית, יוצרים קובץ YAML בפורמט הבא:
  2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes: RESOURCE_NAME
    methodTypes:
      - CREATE
    - UPDATE
    condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ORGANIZATION_ID: מזהה הארגון, למשל 123456789.
    • ‫CONSTRAINT_NAME: השם שרוצים לתת לאילוץ המותאם אישית החדש. אילוץ בהתאמה אישית יכול להכיל רק אותיות (כולל אותיות רישיות וקטנות) או מספרים, למשל, custom.enableGkeAutopilot. השדה הזה יכול להכיל עד 70 תווים, לא כולל הקידומת (custom.) – לדוגמה, organizations/123456789/customConstraints/custom. אל תכללו פרטים אישיים מזהים או מידע אישי רגיש במזהה האילוץ, כי הם עלולים להיחשף בהודעות שגיאה.
    • ‫RESOURCE_NAME: השם המוגדר במלואו של המשאב ב- Google Cloudשמכיל את האובייקט והשדה שרוצים להגביל. לדוגמה, container.googleapis.com/Cluster. רוב סוגי המשאבים תומכים בעד 20 אילוצים בהתאמה אישית. אם תנסו ליצור עוד אילוצים בהתאמה אישית, הפעולה תיכשל.
    • ‫methodTypes: שיטות ה-REST שעליהן נאכף האילוץ. יכול להיות CREATE או גם CREATE וגם UPDATE. אם אוכפים את האילוץ באמצעות השיטה UPDATE במשאב שמפר את האילוץ, מדיניות הארגון חוסמת את השינויים במשאב הזה, אלא אם השינוי פותר את ההפרה.
    • כדי לראות את השיטות הנתמכות לכל שירות, חפשו את השירות במאמר שירותים שתומכים באילוצים בהתאמה אישית.

    • ‫CONDITION: תנאי CEL שנכתב כנגד ייצוג של משאב שירות נתמך. בשדה הזה אפשר להזין עד 1,000 תווים. לדוגמה, "resource.autopilot.enabled == false".
    • במאמר הזה מפורטים המשאבים שאפשר לכתוב תנאים לגביהם.

    • ‫ACTION: הפעולה שצריך לבצע אם התנאי condition מתקיים. הערכים האפשריים הם ALLOW ו-DENY.
    • הפעולה allow (אישור) אומרת שאם התנאי מקבל את הערך true, הפעולה ליצירה או לעדכון של המשאב מותרת. זה גם אומר שכל מקרה אחר, מלבד המקרה שמופיע במפורש בתנאי, חסום.

      הפעולה deny (דחייה) פירושה שאם התנאי מחזיר את הערך true, הפעולה ליצירה או לעדכון של המשאב נחסמת.

    • ‫DISPLAY_NAME: שם קריא לאנשים של האילוץ. השם הזה מופיע בהודעות שגיאה ואפשר להשתמש בו לזיהוי ולניפוי באגים. אל תשתמשו בפרטים אישיים מזהים (PII) או במידע אישי רגיש בשמות המוצגים, כי השם הזה עלול להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 200 תווים.
    • ‫DESCRIPTION: תיאור קריא של האילוץ שיוצג כהודעת שגיאה במקרה של הפרת המדיניות. השדה הזה יכול להכיל עד 2,000 תווים.
  3. אחרי שיוצרים את קובץ ה-YAML לאילוץ חדש בהתאמה אישית, צריך להגדיר אותו כדי שיהיה זמין למדיניות הארגון בארגון. כדי להגדיר אילוץ בהתאמה אישית, משתמשים בפקודה gcloud org-policies set-custom-constraint:
  4. gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    מחליפים את CONSTRAINT_PATH בנתיב המלא לקובץ האילוצים המותאמים אישית. לדוגמה, /home/user/customconstraint.yaml.

    בסיום הפעולה, האילוצים המותאמים אישית יהיו זמינים כמדיניות ארגונית ברשימת Google Cloud המדיניות הארגונית.

  5. כדי לוודא שהאילוץ המותאם אישית קיים, משתמשים בפקודה gcloud org-policies list-custom-constraints:
  6. gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

    מחליפים את ORGANIZATION_ID במזהה של משאב הארגון.

    למידע נוסף על מדיניות הארגון

אכיפה של מדיניות ארגונית בהתאמה אישית

כדי לאכוף אילוץ, אפשר ליצור מדיניות ארגון שמפנה אליו, ואז להחיל את מדיניות הארגון על משאב ב- Google Cloud .

המסוף

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    כניסה לדף Organization policies

  2. בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
  3. מהרשימה בדף מדיניות הארגון, בוחרים את האילוץ כדי לראות את הדף פרטי המדיניות של האילוץ הזה.
  4. כדי להגדיר את מדיניות הארגון למשאב הזה, לוחצים על Manage policy.
  5. בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
  6. לוחצים על Add a rule.
  7. בקטע Enforcement (אכיפה), בוחרים אם מדיניות הארגון הזו נאכפת או לא.
  8. אופציונלי: כדי להוסיף תנאי למדיניות הארגון שמבוסס על תג, לוחצים על Add condition. שימו לב: אם מוסיפים כלל מותנה למדיניות הארגון, צריך להוסיף לפחות כלל אחד לא מותנה, אחרת אי אפשר לשמור את המדיניות. מידע נוסף זמין במאמר בנושא הגדרת היקף של מדיניות הארגון באמצעות תגים.
  9. לוחצים על Test changes כדי לדמות את ההשפעה של מדיניות הארגון. מידע נוסף מופיע במאמר בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.
  10. כדי לאכוף את מדיניות הארגון במצב פרימטר לבדיקות, לוחצים על הגדרת המדיניות להרצת בדיקה. מידע נוסף זמין במאמר בנושא בדיקת מדיניות הארגון.
  11. אחרי שמוודאים שמדיניות הארגון במצב פרימטר לבדיקות פועלת כמו שצריך, לוחצים על Set policy כדי להגדיר את המדיניות הפעילה.

gcloud

  1. כדי ליצור מדיניות ארגונית עם כללים בוליאניים, יוצרים קובץ YAML של מדיניות שמפנה לאילוץ:
  2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: true
    
    dryRunSpec:
      rules:
      - enforce: true

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: הפרויקט שבו רוצים לאכוף את האילוץ.
    • ‫CONSTRAINT_NAME: השם שהגדרתם לאילוץ המותאם אישית. לדוגמה, custom.enableGkeAutopilot.
  3. כדי לאכוף את מדיניות הארגון במצב הרצה יבשה, מריצים את הפקודה הבאה עם הדגל dryRunSpec:
  4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

    מחליפים את POLICY_PATH בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות תיכנס לתוקף תוך 15 דקות לכל היותר.

  5. אחרי שמוודאים שמדיניות הארגון במצב פרימטר לבדיקות פועלת כמו שצריך, מגדירים את המדיניות הפעילה באמצעות הפקודה org-policies set-policy והדגל spec:
  6. gcloud org-policies set-policy POLICY_PATH --update-mask=spec

    מחליפים את POLICY_PATH בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות תיכנס לתוקף תוך 15 דקות לכל היותר.

בדיקה של מדיניות הארגון המותאמת אישית

בדוגמה הבאה נוצר אילוץ בהתאמה אישית ומדיניות שדורשת שכל האשכולות החדשים בפרויקט יהיו אשכולות Autopilot.

יצירת האילוץ

  1. שומרים את הקובץ הבא בשם constraint-enable-autopilot.yaml:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.enableGkeAutopilot
    resourceTypes:
    - container.googleapis.com/Cluster
    methodTypes:
    - CREATE
    condition: "resource.autopilot.enabled == false"
    actionType: DENY
    displayName: Enable GKE Autopilot
    description: All new clusters must be Autopilot clusters.
    

    מחליפים את ORGANIZATION_ID במזהה הארגון.

    הקובץ הזה מגדיר אילוץ שבו לכל אשכול חדש, אם מצב האשכול הוא לא Autopilot, הפעולה נדחית.

  2. מחילים את האילוץ:

    gcloud org-policies set-custom-constraint ~/constraint-enable-autopilot.yaml
    
  3. מוודאים שהאילוץ קיים:

    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    

    הפלט אמור להיראות כך:

    CUSTOM_CONSTRAINT                       ACTION_TYPE  METHOD_TYPES   RESOURCE_TYPES                     DISPLAY_NAME
    custom.enableGkeAutopilot               DENY         CREATE         container.googleapis.com/Cluster   Enable GKE Autopilot
    ...
    

יצירת המדיניות

  1. שומרים את הקובץ הבא בשם policy-enable-autopilot.yaml:

    name: projects/PROJECT_ID/policies/custom.enableGkeAutopilot
    spec:
      rules:
      - enforce: true
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  2. מחילים את המדיניות:

    gcloud org-policies set-policy ~/policy-enable-autopilot.yaml
    
  3. מוודאים שהמדיניות קיימת:

    gcloud org-policies list --project=PROJECT_ID
    

    הפלט אמור להיראות כך:

    CONSTRAINT                  LIST_POLICY    BOOLEAN_POLICY    ETAG
    custom.enableGkeAutopilot   -              SET               COCsm5QGENiXi2E=
    

אחרי שמחילים את המדיניות, מחכים כשתי דקות עד ש- Google Cloud יתחיל לאכוף את המדיניות.

בדיקת המדיניות

מנסים ליצור אשכול GKE Standard בפרויקט:

gcloud container clusters create org-policy-test \
    --project=PROJECT_ID \
    --location=CONTROL_PLANE_LOCATION \
    --num-nodes=1

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט של הפרויקט שבו נמצאת המדיניות.
  • ‫CONTROL_PLANE_LOCATION: המיקום ב-Compute Engine של מישור הבקרה של האשכול. מציינים אזור לאשכולות אזוריים או אזור לאשכולות אזוריים.

הפלט שיתקבל:

Operation denied by custom org policies: ["customConstraints/custom.enableGkeAutopilot": "All new clusters must be Autopilot clusters."]

דוגמאות למדיניות ארגונית בהתאמה אישית לתרחישים נפוצים

הדוגמאות הבאות מספקות את התחביר של כמה אילוצים בהתאמה אישית שיכולים להיות שימושיים:

תיאור תחביר של אילוצים
לא להשבית את השדרוג האוטומטי של צמתים במאגרי צמתים חדשים
name: organizations/ORGANIZATION_ID/customConstraints/custom.enableAutoUpgrade
resourceTypes:
- container.googleapis.com/NodePool
methodTypes:
- CREATE
condition: "resource.management.autoUpgrade == true"
actionType: ALLOW
displayName: Enable node auto-upgrade
description: All node pools must have node auto-upgrade enabled.
הגבלת גישה אנונימית לנקודות קצה של אשכולות באשכולות חדשים וקיימים
name: organizations/ORGANIZATION_ID/customConstraints/custom.gkeAnonymousAccessLimited
resourceTypes:
- container.googleapis.com/Cluster
methodTypes:
- CREATE
- UPDATE
condition: "resource.anonymousAuthenticationConfig.mode == LIMITED"
actionType: ALLOW
displayName: "Restrict anonymous access to cluster endpoints."
description: "All new and updated clusters must restrict anonymous access to cluster endpoints."

המאמרים הבאים