Creación de plantillas de políticas gestionadas por la empresa

Configurar una política de acceso cada vez que necesite conceder acceso en un grupo de acceso o plantilla de perfil de confianza puede llevar mucho tiempo y ser propenso a errores. Simplifique el proceso y mantenga la uniformidad en sus políticas mediante el uso de plantillas de políticas de acceso gestionadas por la empresa para asignar acceso o crear autorizaciones de servicio a servicio.

Las plantillas de políticas de acceso definen una política sin necesidad de un sujeto, y puede utilizarlas para conceder acceso a varios sujetos.

Por ejemplo, es posible que necesite asignar una política de acceso que conceda acceso de administrador en todos los servicios habilitados para IAM a varios grupos de acceso o plantillas de perfiles de confianza para que los miembros puedan crear instancias de servicios habilitados para IAM. Para reducir las configuraciones erróneas de las políticas, cree una plantilla de política de acceso llamada Admin on All IAM enabled services. Seleccione la política preconfigurada cuando necesite asignar ese nivel de acceso en un grupo de acceso o plantilla de perfil de confianza.

Aunque no se requiere una política de sujeto si utiliza la CLI o la API, sí que necesita una en la consola de IBM Cloud. Cada vez que asigna una política de acceso a una plantilla de perfil de confianza o de grupo de acceso en la consola de administración de usuarios ( IBM Cloud ), crea una plantilla de política. Puede hacer referencia a plantillas de políticas para conceder acceso en plantillas de perfiles y grupos de acceso de confianza mediante la consola, la CLI o la API. Para ver la política, vaya a Administrar > Acceso (IAM) > Plantillas > Políticas.

Las plantillas de política de acceso solo son compatibles con el esquema v2/policies. Para obtener más información, consulte el registro de cambios de la API de gestión de políticas de IAM.

Creación de una plantilla de política mediante la consola

Las plantillas de políticas que cree en la consola de administración de políticas de usuario ( IBM Cloud ) deben estar asociadas a un grupo de acceso o a una plantilla de perfil de confianza. Más información sobre cómo agregar políticas de acceso a plantillas de grupos de acceso y plantillas de perfiles de confianza.

Creación de una plantilla de política independiente

Las plantillas de políticas permiten a los administradores de cuentas de empresa definir reglas de acceso de forma independiente, sin vincularlas directamente a un grupo de acceso o a una plantilla de perfil de confianza. Pueden crearse, actualizarse, gestionarse de forma independiente y reutilizarse. Una vez finalizada, la plantilla de política debe añadirse a un grupo de acceso o a una plantilla de perfil de confianza. Cuando se vincula una plantilla de política, se pueden asignar a subcuentas, en las que se aplican las normas asociadas.

Para crear una plantilla de política autónoma en la consola, siga estos pasos:

  1. Vaya a Gestionar > Acceso (IAM) > Empresa > Plantillas > Políticas en IBM Cloud y haga clic en Crear.

  2. Introduce un nombre para la plantilla y haz clic en « Crear ».

  3. Haga clic en Acceso e introduzca los datos de la póliza.

  4. Seleccione un servicio o grupo de servicios y haga clic en Siguiente.

  5. Amplíe el acceso a Todos los recursos o seleccione Recursos específicos basados en atributos y haga clic en Siguiente.

  6. En la sección Funciones y acciones, seleccione las funciones que definen el ámbito de acceso. Puede crear plantillas de funciones personalizadas dentro de un flujo de plantillas de políticas y también seleccionar una función personalizada de las plantillas de funciones personalizadas existentes para el servicio seleccionado.

    1. Haga clic en Crear rol personalizado para definir una combinación personalizada de acciones.
    2. (Opcional) Introduce una descripción de la plantilla.
    3. Introduce un nombre para el rol personalizado.
    4. Introduce un ID para el rol personalizado.
    5. (Opcional) Introduce una descripción para el rol personalizado.
    6. Seleccione las acciones y haga clic en Crear. El rol personalizado aparece en la lista y se selecciona junto con cualquier otro rol que ya esté seleccionado para la política.

    Utilice la barra de búsqueda para buscar funciones que admitan acciones concretas. Por ejemplo, busque leer, editar o ver para ver la lista de roles a los que se aplican estas acciones.

  7. (Opcional) Añada condiciones para especificar cuándo desea que la política conceda acceso.

  8. Pulse Guardar.

Revisión de un modelo de política

Para bloquear la versión y evitar que se realicen más cambios, revise y confirme la plantilla de política siguiendo los pasos que se indican a continuación:

  1. Pulse Revisar.
  2. Compruebe que la plantilla de política está configurada según sus expectativas.
  3. Seleccione la casilla de verificación para confirmar que la versión de la plantilla de política está bloqueada y no se puede modificar.
  4. Pulse Confirmar.

Crear una nueva versión

Cree una nueva versión de una plantilla de directiva para actualizar sus configuraciones sin cambiar la configuración original. Te ayuda a mejorar o ajustar la configuración y a mantener un registro de las versiones anteriores.

Para crear una nueva versión de una plantilla de política, sigue estos pasos:

  1. Haga clic en Gestionar > Acceso (IAM) > Plantillas > Políticas en la consola IBM Cloud.

  2. Seleccione su plantilla de política.

  3. Haga clic en el icono de Nueva versión Icono de Nueva versión.

  4. Seleccione la versión que desee como base para su nueva versión.

  5. Introduzca una nueva descripción para la plantilla y la política de acceso, o mantenga las que ya tiene.

  6. Pulse Crear.

  7. Realice los ajustes necesarios en la política de acceso.

    No puede editar el Servicio de la política de acceso, pero puede cambiar los Recursos, Roles y Condiciones.

  8. Pulse Guardar.

  9. Haga clic en Revisar y confirme la nueva versión.

Eliminar una plantilla de política en la consola

Al eliminar una plantilla de política se eliminan todas las versiones de la plantilla. Puede eliminar una plantilla de política a la que se haga referencia en un borrador o en una plantilla de grupo de acceso o perfil de confianza confirmada. Sin embargo, la referencia de la plantilla de política deja de ser válida y debe eliminarla antes de poder asignar la plantilla de perfil de confianza o grupo de acceso a las cuentas secundarias.

En caso de que desee eliminar una plantilla de política a la que se hace referencia en una plantilla de perfil de confianza o de grupo de acceso asignada a cuentas secundarias, debe eliminar la asignación de plantilla de perfil de confianza o de grupo de acceso de dichas cuentas secundarias. Para obtener más información, consulte Eliminación de una asignación para plantillas de grupos de acceso y plantillas de perfiles de confianza.

Para eliminar una plantilla de política en la consola, sigue estos pasos:

  1. Ve a «Gestionar» > «Acceso (IAM)» > «Plantillas» en IBM Cloud.
  2. Pulse Políticas.
  3. Haga clic en el icono Acciones. Icono Acciones > Eliminar plantilla.
  4. Confirma que deseas eliminar la plantilla.

Eliminar una versión de plantilla de política en la consola

Para eliminar solo una versión concreta, sigue estos pasos:

  1. Ve a «Gestionar» > «Acceso (IAM)» > «Plantillas» en IBM Cloud.
  2. Pulse Políticas.
  3. Haga clic en el icono Acciones. Icono Acciones > Eliminar versión.
  4. Confirma que deseas eliminar la versión.

Cree una plantilla de política de acceso utilizando la CLI

Si varios grupos de acceso o plantillas de perfiles de confianza requieren la misma política, cree una plantilla de política de acceso.

Para crear una plantilla de política de acceso mediante la CLI, sigue estos pasos:

  1. Cree un archivo JSON que configure la definición de la plantilla de política. Para obtener más información sobre los atributos que puede utilizar en su archivo JSON, consulte la API de gestión de políticas de IAM.

    El siguiente archivo JSON de ejemplo especifica el name y el description de la plantilla y el account_id de la cuenta de empresa. A continuación, se define la definición de " policy ". Esta plantilla de política concede una política de acceso con permisos de editor en el IBM Cloud Security and Compliance Center Workload Protection servicio. La política incluye una regla basada en el tiempo que concede acceso de lunes a viernes durante todo el día, repitiéndose semanalmente. Para obtener más información, consulte Condiciones basadas en el tiempo y Limitar el acceso con condiciones basadas en el tiempo.

    {
      "name": "SCCWPEditor",
      "description": "Grant Editor role on Security and Compliance Center Workload Protection service",
      "account_id": "ACCOUNT_ID",
      "policy": {
        "type": "access",
        "description": "Grant Editor role on Security and Compliance Center Workload Protection service",
        "control": {
            "grant": {
            "roles": [
              {
                "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
              }
            ],
          },
        },
        "resource": [
          {
            "attributes": [
              {
                "key": "serviceName",
                "operator": "stringEquals",
                "value": "compliance"
              }
            ]
          }
        ],
        "rule" :{
          "key": "{{environment.attributes.day_of_week}}",
          "operator": "dayOfWeekAnyOf",
          "value": ["1+00:00", "2+00:00", "3+00:00", "4+00:00", "5+00:00"]
        },
        "pattern": "time-based-conditions:weekly:all-day"
      }
    }
    
  2. Utilice el comando ap-template-create como se muestra en la siguiente solicitud de muestra:

imcloud iam access-policy-template-create --file /path/to/security_editor_access_policy_template.json

Actualización de una plantilla de política de acceso mediante la CLI

Puedes actualizar las funciones, los recursos, el nombre y la descripción de una plantilla de política en cualquier momento antes de confirmarla.

Para actualizar una plantilla de política mediante la CLI, sigue estos pasos:

  1. Actualice su archivo JSON con la nueva definición de plantilla de política. Para obtener más información sobre los atributos que puede utilizar en su archivo JSON, consulte la API de gestión de políticas de IAM.

    Cuando actualizas el nombre de la plantilla, se actualiza el nombre de todas las versiones.

  2. Utilice el comando ap-template-version-update como se muestra en la siguiente solicitud de muestra:

    ibmcloud iam access-policy-template-update SCCWPEditor 1 --file /path/to/security_editor_access_policy_template.json
    

    Esto actualiza la versión 1 de la plantilla de política de SCCWPEditor haciendo referencia al archivo JSON actualizado.

Si necesita realizar actualizaciones después de confirmar la plantilla, cree una nueva versión.

Comprometer una versión de plantilla de política mediante el uso de la CLI

Revise la plantilla de la política y confírmela para que no se puedan realizar más cambios en la versión. De esta manera, el administrador de asignación de plantillas puede estar seguro de que asigna la versión solo cuando usted haya confirmado que está lista.

  1. Revise la plantilla de la política antes de comprometerse a utilizarla mediante el método access-policy-template-version para ver la versión específica.

    ibmcloud iam access-policy-template-version SCCWPEditor 1
    
  2. Para comprometer una plantilla de política mediante el CLI, utilice el método ap-template-version-commit como se muestra en la siguiente solicitud de ejemplo:

    ibmcloud iam access-policy-template-version-commit SCCWPEditor 1
    

Concesión de acceso con una plantilla de política mediante el uso de la CLI

A diferencia de las políticas de acceso normales, las plantillas de políticas no tienen un asunto explícito al que se le está concediendo acceso cuando se crea.

Puede hacer referencia a una plantilla de política para asignar acceso en un grupo de acceso o plantilla de perfil de confianza mediante la CLI.

  1. Enumere todas las plantillas de políticas de acceso y anote el ID de la plantilla de política utilizando el comando ap-templates como se muestra en la siguiente solicitud de muestra:

    ibmcloud iam access-policy-templates
    
  2. Utilice el ID de plantilla de política para asignar acceso en plantillas de grupos de acceso y plantillas de perfiles de confianza.

    1. En el archivo JSON que configura una plantilla de grupo de acceso o una plantilla de perfil de confianza, hay un parámetro policy_template_references. Utilice los campos " id " y " version " de la plantilla de política a la que desea hacer referencia para conceder acceso. Para obtener más información, consulte la documentación sobre perfiles de confianza y grupos de acceso.

Creación de una nueva versión de una plantilla de política de acceso mediante la CLI

A medida que los requisitos de acceso evolucionen para los equipos de su empresa, es posible que tenga que crear otra versión de una plantilla de política para satisfacer las nuevas necesidades. Para crear una nueva versión de plantilla de política mediante la CLI, siga estos pasos:

  1. Edite su archivo JSON para incluir cualquier actualización de la definición de la plantilla de la política. Para obtener más información sobre los atributos que puede utilizar en su archivo JSON, consulte la API de gestión de políticas de IAM

  2. Utilice el comando access-policy-template-version-create como se muestra en la siguiente solicitud de muestra:

    ibmcloud iam access-policy-template-version-create SCCWPEditor --file /path/to/security_editor_access_policy_template.json
    

Eliminación de referencias de plantillas de políticas mediante la CLI

Al eliminar la referencia a una plantilla de política de un grupo de acceso o de una plantilla de perfil de confianza, se revocan los permisos que la política otorga a los miembros. Puede eliminar una referencia de plantilla de política de una plantilla de IAM en estado Borrador. Sin embargo, no puede eliminar una plantilla de política a la que se haga referencia en una plantilla de grupo de acceso o perfil de confianza asignado o confirmado.

Si desea asignar una política diferente en un grupo de acceso comprometido o asignado o en una plantilla de perfil de confianza, debe crear una nueva versión. Para obtener más información, consulte Creación de una nueva versión de plantillas de grupos de acceso y plantillas de perfiles de confianza.

Puede eliminar una referencia de plantilla de política para un grupo de acceso o una plantilla de perfil de confianza mediante la CLI.

  1. Obtenga el ID de la plantilla de política utilizando el comando ap-templates como se muestra en la siguiente solicitud de muestra:

    example command
    
  2. Actualice el archivo JSON que configura el grupo de acceso o la definición de plantilla de perfil de confianza y elimine la referencia a la plantilla de política. Para más información, ver.

Cómo eliminar una versión mediante la CLI

Puede eliminar una plantilla de política a la que se haga referencia en un borrador o en una plantilla de grupo de acceso o perfil de confianza confirmada. Sin embargo, la referencia de la plantilla de política deja de ser válida y debe eliminarla antes de poder asignar la plantilla de perfil de confianza o grupo de acceso a las cuentas secundarias.

En caso de que desee eliminar una plantilla de política a la que se hace referencia en una plantilla de perfil de confianza o de grupo de acceso asignada a cuentas secundarias, debe eliminar la asignación de plantilla de perfil de confianza o de grupo de acceso de dichas cuentas secundarias. Para obtener más información, consulte Eliminación de una asignación para plantillas de grupos de acceso y plantillas de perfiles de confianza.

Para eliminar una versión de plantilla de política mediante la CLI, utilice el comando access-policy-template-version-delete como se muestra en la siguiente solicitud de ejemplo:

ibmcloud iam access-policy-template-version-delete SCCWPEditor 2

Esto elimina la versión 2 de la plantilla de política de SCCWPEditor.

Creación de una plantilla de política mediante la API

Si existe una política que pueda requerir múltiples plantillas de grupo de acceso o de perfil de confianza, cree una plantilla de política de acceso.

Para crear mediante programación una plantilla de política de acceso utilizando la API, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de ejemplo:

curl -X POST 'https://iam.cloud.ibm.com/v1/policy_template' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "name": "IKSEditor",
  "description": "Grant Editor Role on SERVICE_NAME",
  "account_id": "ACCOUNT_ID",
  "policy": {
     "type": "acces",
     "description": "Grant Editor Role on SERVICE_NAMEe",
     "control": {
        "grant": {
        "roles": [
          {
            "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
          }
        ],
      },
    },
    "resource": [
      {
        "attributes": [
          {
            "key": "serviceName",
            "operator": "stringEquals",
            "value": "$SERVICE_NAME"
          }
        ]
      }
    ],
    "rule" :{
      "key": "{{environment.attributes.day_of_week}}",
      "operator": "dayOfWeekAnyOf",
      "value": ["1+00:00", "2+00:00", "3+00:00", "4+00:00", "5+00:00"]
    },
    "pattern": "time-based-conditions:weekly:all-day"
}'
policyRole := &iampolicymanagementv1.Roles{
  RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer"),
}
v2PolicyGrant := &iampolicymanagementv1.Grant{
  Roles: []iampolicymanagementv1.Roles{*policyRole},
}
v2PolicyControl := &iampolicymanagementv1.Control{
  Grant: v2PolicyGrant,
}
serviceNameResourceAttribute := &iampolicymanagementv1.V2PolicyResourceAttribute{
  Key:      core.StringPtr("serviceName"),
  Operator: core.StringPtr("stringEquals"),
  Value:    core.StringPtr("iam-access-management"),
}
policyResource := &iampolicymanagementv1.V2PolicyResource{
  Attributes: []iampolicymanagementv1.V2PolicyResourceAttribute{
    *serviceNameResourceAttribute},
}
templatePolicyModel := &iampolicymanagementv1.TemplatePolicy{
  Type:        core.StringPtr("access"),
  Description: core.StringPtr("Test Template"),
  Resource:    policyResource,
  Control:     v2PolicyControl,
}
createPolicyTemplateOptions := iamPolicyManagementService.NewCreatePolicyTemplateOptions(
  examplePolicyTemplateName,
  exampleAccountID,
  templatePolicyModel,
)
policyTemplate, response, err := iamPolicyManagementService.CreatePolicyTemplate(createPolicyTemplateOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policyTemplate, "", "  ")
fmt.Println(string(b))

Actualización de una versión de plantilla de política mediante el uso de la API

Puedes actualizar las funciones, los recursos, el nombre y la descripción de una plantilla de política en cualquier momento antes de confirmarla. Para actualizar mediante programación la plantilla de políticas utilizando la API, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de muestra:

curl -X PUT 'https://iam.cloud.ibm.com/v1/policy_templates/$TEMPLATE_ID/versions/$TEMPLATE_VERSION' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -H 'If-Match: $ETAG' -d '{
  "type": "access",
  "description": "Viewer role for for all instances of SERVICE_NAME in the account.",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "$USER_ID"
        }
      ]
    }'
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "$SERVICE_NAME"
        }
      ]
    }
  ]
}'
v2PolicyGrant := &iampolicymanagementv1.Grant{
  Roles: []iampolicymanagementv1.Roles{
    {core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer")},
    {core.StringPtr("crn:v1:bluemix:public:iam::::role:Administrator")},
  },
}
v2PolicyControl := &iampolicymanagementv1.Control{
  Grant: v2PolicyGrant,
}
serviceNameResourceAttribute := &iampolicymanagementv1.V2PolicyResourceAttribute{
  Key:      core.StringPtr("serviceName"),
  Operator: core.StringPtr("stringEquals"),
  Value:    core.StringPtr("watson"),
}
policyResource := &iampolicymanagementv1.V2PolicyResource{
  Attributes: []iampolicymanagementv1.V2PolicyResourceAttribute{
    *serviceNameResourceAttribute},
}
templatePolicyModel := &iampolicymanagementv1.TemplatePolicy{
  Type:        core.StringPtr("access"),
  Description: core.StringPtr("Test Template v2"),
  Resource:    policyResource,
  Control:     v2PolicyControl,
}
replacePolicyTemplateOptions := iamPolicyManagementService.NewReplacePolicyTemplateOptions(
  examplePolicyTemplateID,
  examplePolicyTemplateVersion,
  examplePolicyTemplateETag,
  templatePolicyModel,
)
policyTemplate, response, err := iamPolicyManagementService.ReplacePolicyTemplate(replacePolicyTemplateOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policyTemplate, "", "  ")
fmt.Println(string(b))

Si necesita realizar actualizaciones después de confirmar la plantilla, cree una nueva versión.

Compromiso de una versión de plantilla de política

Revise la plantilla de la política y confírmela para que no se puedan realizar más cambios en la versión. De esta manera, el administrador de asignación de plantillas puede estar seguro de que asigna la versión solo cuando usted haya confirmado que está lista. Para comprometer mediante programación una plantilla de política utilizando la API, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de ejemplo:

curl -X PUT 'https://iam.cloud.ibm.com/v1/policy_templates/$TEMPLATE_ID/versions/$TEMLPATE_VERSION/commit' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -H 'If-Match: $ETAG' -d '{}'
commitPolicyTemplateOptions := iamPolicyManagementService.NewCommitPolicyTemplateOptions(
  examplePolicyTemplateID,
  examplePolicyTemplateVersion,
  examplePolicyTemplateETag,
)
response, err := iamPolicyManagementService.CommitPolicyTemplate(commitPolicyTemplateOptions)
if err != nil {
  panic(err)
}
if response.StatusCode != 204 {
  fmt.Printf("\nUnexpected response status code received from CommitPolicyTemplate(): %d\n", response.StatusCode)
}

Concesión de acceso con una plantilla de política mediante el uso de la API

A diferencia de las políticas de acceso normales, una plantilla de política de acceso no tiene un asunto explícito al que se le está concediendo acceso cuando se crea. Para asignar mediante programación una plantilla de política a un grupo de acceso o a una plantilla de perfil de confianza utilizando la API, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de ejemplo:

  1. Enumere todas las plantillas de políticas de acceso y anote el ID de la plantilla de política en la respuesta:

    curl -X GET 'https://iam.cloud.ibm.com/v1/policy_templates?account_id=$ACCOUNT_ID' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json'
    
  2. Utilice el ID de plantilla de política para asignar acceso en plantillas de grupos de acceso y plantillas de perfiles de confianza. Para obtener más información, consulte la documentación sobre perfiles de confianza y grupos de acceso.

Creación de una nueva versión de plantilla de política mediante el uso de la API

A medida que los requisitos de acceso evolucionen para los equipos de su empresa, es posible que tenga que crear otra versión de una plantilla de política para satisfacer las nuevas necesidades. Para crear mediante programación una nueva versión de plantilla de política utilizando la API, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de ejemplo:

curl -X POST 'https://iam.cloud.ibm.com/v1/policy_template/$TEMPLATE_ID/versions' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "name": "IKSEditor",
  "description": "Grant Editor Role on SERVICE_NAME",
  "account_id": "ACCOUNT_ID",
  "policy": {
     "type": "acces",
     "description": "Grant Editor Role on SERVICE_NAMEe",
     "control": {
        "grant": {
        "roles": [
          {
            "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
          }
        ],
      },
    },
    "resource": [
      {
        "attributes": [
          {
            "key": "serviceName",
            "operator": "stringEquals",
            "value": "$SERVICE_NAME"
          }
        ]
      }
    ],
    "rule" :{
      "key": "{{environment.attributes.day_of_week}}",
      "operator": "dayOfWeekAnyOf",
      "value": ["1+00:00", "2+00:00", "3+00:00", "4+00:00", "5+00:00"]
    },
    "pattern": "time-based-conditions:weekly:all-day"
}'
v2PolicyGrant := &iampolicymanagementv1.Grant{
  Roles: []iampolicymanagementv1.Roles{
    {core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer")},
    {core.StringPtr("crn:v1:bluemix:public:iam::::role:Administrator")},
  },
}
v2PolicyControl := &iampolicymanagementv1.Control{
  Grant: v2PolicyGrant,
}
serviceNameResourceAttribute := &iampolicymanagementv1.V2PolicyResourceAttribute{
  Key:      core.StringPtr("serviceName"),
  Operator: core.StringPtr("stringEquals"),
  Value:    core.StringPtr("watson"),
}
policyResource := &iampolicymanagementv1.V2PolicyResource{
  Attributes: []iampolicymanagementv1.V2PolicyResourceAttribute{
    *serviceNameResourceAttribute},
}
templatePolicyModel := &iampolicymanagementv1.TemplatePolicy{
  Type:        core.StringPtr("access"),
  Description: core.StringPtr("Test Template v2"),
  Resource:    policyResource,
  Control:     v2PolicyControl,
}
createPolicyTemplateVersionOptions := iamPolicyManagementService.NewCreatePolicyTemplateVersionOptions(
  examplePolicyTemplateID,
  templatePolicyModel,
)
policyTemplate, response, err := iamPolicyManagementService.CreatePolicyTemplateVersion(createPolicyTemplateVersionOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policyTemplate, "", "  ")
fmt.Println(string(b))

Lista de plantillas de políticas

Es posible que necesite enumerar las plantillas de políticas en su cuenta empresarial por varias razones. Puede ver qué políticas están disponibles o recuperar detalles sobre una política que desea editar, quitar de otra plantilla o eliminar.

Para enumerar las plantillas de políticas en su cuenta empresarial, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de muestra:

curl -X GET 'https://iam.cloud.ibm.com/v1/policy_templates?account_id=$ACCOUNT_ID' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json'
listPolicyTemplatesOptions := iamPolicyManagementService.NewListPolicyTemplatesOptions(
  exampleAccountID,
)
policyTemplateCollection, response, err := iamPolicyManagementService.ListPolicyTemplates(listPolicyTemplatesOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policyTemplateCollection, "", "  ")
fmt.Println(string(b))

Eliminar referencias de plantillas de políticas mediante el uso de la API

Al eliminar la referencia a una plantilla de política de un grupo de acceso o de una plantilla de perfil de confianza, se revocan los permisos que la política otorga a los miembros. Puede eliminar una referencia de plantilla de política de una plantilla de IAM en estado Borrador. Sin embargo, no puede eliminar una plantilla de política a la que se haga referencia en una plantilla de grupo de acceso o perfil de confianza asignado o confirmado.

Si desea asignar una política diferente en un grupo de acceso comprometido o asignado o en una plantilla de perfil de confianza, debe crear una nueva versión. Para obtener más información, consulte Creación de una nueva versión de plantillas de grupos de acceso y plantillas de perfiles de confianza.

Para eliminar una plantilla de política de un grupo de acceso o de plantillas de perfiles de confianza, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de muestra:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/policy_assignments/$POLICY_ASSIGNMENT_ID' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json'

Cómo eliminar una plantilla de política mediante la API

Al eliminar una plantilla de política se eliminan todas las versiones de la plantilla. Puede eliminar una plantilla de política a la que se haga referencia en un borrador o en una plantilla de grupo de acceso o perfil de confianza confirmada. Sin embargo, la referencia de la plantilla de política deja de ser válida y debe eliminarla antes de poder asignar la plantilla de perfil de confianza o grupo de acceso a las cuentas secundarias.

En caso de que desee eliminar una plantilla de política a la que se hace referencia en una plantilla de perfil de confianza o de grupo de acceso asignada a cuentas secundarias, debe eliminar la asignación de plantilla de perfil de confianza o de grupo de acceso de dichas cuentas secundarias. Para obtener más información, consulte Eliminación de una asignación para plantillas de grupos de acceso y plantillas de perfiles de confianza.

Para eliminar una plantilla de política, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de muestra:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/policy_templates/$TEMPLATE_ID/versions/$TEMPLATE_VERSION' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json'
deletePolicyTemplateOptions := iamPolicyManagementService.NewDeletePolicyTemplateOptions(
  examplePolicyTemplateID,
)
response, err := iamPolicyManagementService.DeletePolicyTemplate(deletePolicyTemplateOptions)
if err != nil {
  panic(err)
}
if response.StatusCode != 204 {
  fmt.Printf("\nUnexpected response status code received from DeletePolicyTemplate(): %d\n", response.StatusCode)
}

Eliminación de una versión de plantilla de política mediante el uso de la API

Para eliminar solo una versión específica, llame a la API de gestión de políticas de IAM como se muestra en la siguiente solicitud de muestra:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/policy_templates/$TEMPLATE_ID/versions/$TEMPLATE_VERSION' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json'
deletePolicyTemplateVersionOptions := iamPolicyManagementService.NewDeletePolicyTemplateVersionOptions(
  examplePolicyTemplateID,
  examplePolicyTemplateVersion,
)
response, err := iamPolicyManagementService.DeletePolicyTemplateVersion(deletePolicyTemplateVersionOptions)
if err != nil {
  panic(err)
}
if response.StatusCode != 204 {
  fmt.Printf("\nUnexpected response status code received from DeletePolicyTemplateVersion(): %d\n", response.StatusCode)
}