It's possible, I use it every time.
First of all remember that the resource that Zend_Acl will verify is an arbitrary entity (a string), not necessary related to a particular module or controller. It can be the string "hello" and in your program you can check if the user can access the resource "hello". I often use some arbitrary resources as "login-button", "logout-button" to show the link in Zend_Navigation.
In your case, you should define the resource (in the acl) as some string that can be mapped to a module/controller layout.
For example for the module foo and controller bar define the resource "foo.bar". Than in the access check procedure you will read module and controller name and merge them in a string to obtain the resource.
In a pratical example:
class Application_Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract {
...
public function preDispatch(Zend_Controller_Request_Abstract $request){
$module = $request->getModuleName();
$controller = $request->getControllerName();
$action = $request->getActionName();
...
$resource = $module . '.' . $controller; //we create the custom resource according to the model we have defined
...
$role=NULL;
if($this->_auth->hasIdentity()){
$identity = $this->_auth->getStorage()->read(); //depending on your implementation
$role = $identity->role; //depending on your implementation
}
...
if(!$this->_acl->isAllowed($role, $resource, $action)){
//deny access
}
//allow access
}
}