azure 如何通过API管理处理内部和外部API访问?

aiqt4smr  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(128)

我有一个场景,当API落后于Azure API管理时需要帮助。在任何组织中,他们都有内部和外部API。
在我们的组织中,我们有Azure API管理,它对客户端的Internet是公开的。但我们希望限制所有内部API不暴露于Internet。有什么方法可以限制这一点吗?
例如:www.myorganisation/apimanjun/internal/* ---不应该访问互联网。(只能在公司网络中使用有效的JWT令牌访问)
www.myorganisation/apimanjournal/external/* --应该可以通过有效的JWT令牌访问Internet
我们在Azure API管理中使用OKTA作为Oauth提供程序,并在每个API策略中验证JWT令牌。

nbewdwxp

nbewdwxp1#

您可以使用API-M功能(如产品、组、用户和订阅)限制访问。
内部产品应该只允许内部用户访问-您也可以喜欢AD安全组。
外部访问应由IT员工根据具体情况进行控制。
例如,可以在Bicep中编写下面的Infra As代码,以在Azure API-M中生成产品、组和订阅访问。
首先创建一个产品:

module product'products/template.bicep' = {
  name: 'testProduct'
  params: {
    apimServiceName: apimServiceName
    productDescription: 'Product Project APIs'
    productDisplayName: 'Product Project'
    productName: 'ProductName'
    productSubscription: true
    productApproval: true
  }
}

字符串
将产品添加到订阅:

module addSubsciptionToProduct 'subscriptions/template.bicep' = {
  name: 'subscriptionToProduct'
  params: {
    apimServiceName: apimServiceName
    scopeId: testProduct.outputs.productId
    subscriptionDisplayName: 'ProductSubscriptionKey'
    name: 'product-subscription-key'
    primaryKey: keyVault.getSecret('product-subscription-key')
  }
}


创建一个组:

module group 'groups/template.bicep' = {
  name: 'groupDeployment'
  params: {
    apimServiceName: apimServiceName
    groupName: 'product-group'
    displayName: 'Product User Group'
  }
}


然后将产品链接到组:

module productGroup 'product-group-links/template.bicep' = {
  name: 'prodcuctGroupDeployment'
  params: {
    apimServiceName: apimServiceName
    productGroupName: group.outputs.id
    productName: testProduct.outputs.productName
  }
}


您也可以在Azure门户中使用点击操作手动完成所有这些操作。

相关问题