2017-02-13 25 views
-1

我想找出一個用戶的IAM策略問題。 我有政策說拒絕訪問,如果該服務不在我們的名單。我試圖授予我的用戶訪問apigateway的所有操作。我提供了以下政策。但它拒絕除GET,OPTIONS,HEAD之外的所有操作。我在開始的時候會擁有狂野的角色*,會有個別的操作會覆蓋狂野的角色設置。我正在嘗試瞭解IAM的評估順序。個人行爲是否會覆蓋*?我們是否有AWS IAM的評估訂單?

{ 
    "Statement": [ 
     { 
      "Resource": "*", 
      "Effect": "Deny", 
      "NotAction": [ 
       "apigateway:*" 
       "apigateway:GET", 
       "apigateway:OPTIONS", 
       "apigateway:HEAD" 
      ] 
     } 
    ] 
} 

回答

1

在AWS IAM,所有的請求都默認拒絕。因此,您只需授予所需操作的權限,而默認情況下所有其他操作都將被拒絕。

當發出請求時,AWS服務會決定是否允許或拒絕給定的 請求。評估邏輯如下 這些規則:

  • 默認情況下,所有請求都被拒絕。 (一般來說,始終允許使用帳戶資源帳戶憑據進行的請求。)

  • 顯式允許覆蓋此默認值。

  • 顯式拒絕覆蓋任何允許。

評估策略的順序對評估結果沒有影響。所有策略都會被評估,結果總是會允許或拒絕請求。

請參閱Determining Whether a Request is Allowed or Denied

所以,平時應該夠寫你Allow政策:

{ 
    "Statement": [ 
     { 
      "Resource": "*", 
      "Effect": "Allow", 
      "Action": [ 
       "apigateway:GET", 
       "apigateway:OPTIONS", 
       "apigateway:HEAD" 
      ] 
     } 
    ] 
} 

但是,如果您懷疑其他策略可能被授予用戶不想要的動作,你可以寫你的Deny政策:

{ 
    "Statement": [ 
     { 
      "Resource": "*", 
      "Effect": "Deny", 
      "NotAction": [ 
       "apigateway:GET", 
       "apigateway:OPTIONS", 
       "apigateway:HEAD" 
      ] 
     } 
    ] 
}